For extending models (and controller methods) I use concerns:
Then you can include them in other classes or modules in your repo.
Then you can let your user know to add an
include statement in the readme.
class AfterSignupController < ApplicationController include Wicked::Wizard
Some people like to automatically add methods to ActiveRecord::Base or other similar classes, this allows them to have a dsl like
acts_as_tree but this just pollutes the available methods, and makes me have to remember unneeded dsl when we ruby already has this type of behavior included with
If you want to add methods directly to the ApplicationController of an app you can add a application_controller_helper.rb
You need to include it
then you can define a helper method for it:
include scope::ApplicationControllerHelper if defined?(scope::ApplicationControllerHelper)
and finally in your engine:
initializer “opro.include_helpers” do
For extending controllers like devise i’ve done this:
You use the user supplied controller or fall back to a default view.
Digging in the devise source as well can be tremendously valuable, though slightly daunting the first time or two. Let me know if you have some questions.