For extending models (and controller methods) I use concerns: https://github.com/schneems/wicked/tree/master/lib/wicked/controller/concerns
Then you can include them in other classes or modules in your repo. https://github.com/schneems/wicked/blob/master/lib/wicked/wizard.rb Then you can let your user know to add an `include` statement in the readme. https://github.com/schneems/wicked 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 `include` If you want to add methods directly to the ApplicationController of an app you can add a application_controller_helper.rb https://github.com/schneems/opro/tree/master/lib/opro/controllers You need to include it require 'opro/controllers/application_controller_helper' then you can define a helper method for it: def self.include_helpers(scope) ActiveSupport.on_load(:action_controller) do include scope::ApplicationControllerHelper if defined?(scope::ApplicationControllerHelper) end end and finally in your engine: initializer "opro.include_helpers" do Opro.include_helpers(Opro::Controllers) end For extending controllers like devise i've done this: https://github.com/schneems/opro/blob/master/lib/opro/rails/routes.rb 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. -- Richard Schneeman http://heroku.com @schneems (http://twitter.com/schneems) On Thursday, July 12, 2012 at 2:12 PM, Weston Platter wrote: > Is there a "Rails Way" way for extending models and controllers of rails > engines? > > The docs have TODO notes with no content for extending controllers and models > (see 5.2 and 5.3 http://guides.rubyonrails.org/engines.html). > > If there's preferred method, I would love to use it and I'll update the docs. > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Core" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/rubyonrails-core/-/q7XpeRAheHkJ. > To post to this group, send email to [email protected] > (mailto:[email protected]). > To unsubscribe from this group, send email to > [email protected] > (mailto:[email protected]). > For more options, visit this group at > http://groups.google.com/group/rubyonrails-core?hl=en. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Core" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.
