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.

Reply via email to