We're currently discussing the best way to do this on Forem's issue #260 (https://github.com/radar/forem/pull/260). Kunal there wants to add methods to or modify the Forem::Post class, and so we're going to go with the app/decorators directory for that.
On Friday, 13 July 2012 at 5:49 AM, Mark McSpadden II wrote: > There has been some work done on the edgeguides around this as well. There > are a few notes scattered throughout but I believe this section is that you > are looking for. > > http://edgeguides.rubyonrails.org/engines.html#using-a-class-provided-by-the-application > > > If that feels incomplete or lacking, please do contribute to make it better. > > Mark McSpadden > > On Thu, Jul 12, 2012 at 3:46 PM, Richard Schneeman > <richard.schnee...@gmail.com (mailto:richard.schnee...@gmail.com)> wrote: > > 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 rubyonrails-core@googlegroups.com > > > (mailto:rubyonrails-core@googlegroups.com). > > > To unsubscribe from this group, send email to > > > rubyonrails-core+unsubscr...@googlegroups.com > > > (mailto:rubyonrails-core+unsubscr...@googlegroups.com). > > > 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 rubyonrails-core@googlegroups.com > > (mailto:rubyonrails-core@googlegroups.com). > > To unsubscribe from this group, send email to > > rubyonrails-core+unsubscr...@googlegroups.com > > (mailto:rubyonrails-core%2bunsubscr...@googlegroups.com). > > 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 rubyonrails-core@googlegroups.com > (mailto:rubyonrails-core@googlegroups.com). > To unsubscribe from this group, send email to > rubyonrails-core+unsubscr...@googlegroups.com > (mailto:rubyonrails-core+unsubscr...@googlegroups.com). > 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 rubyonrails-core@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-core+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-core?hl=en.