Added 2 strategies for extending Engine Models. Feedback is welcome.
https://github.com/lifo/docrails/commit/890b9dd4439986e306ec4fc0067a00effa606204

On Friday, July 20, 2012 4:20:48 AM UTC-4, atd wrote:
>
>  It seems pretty useful for other engines as well! Any chances to be 
> included in Rails?
>
> On 13/07/12 06:00, Ryan Bigg wrote: 
>
>  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 <
> [email protected]> 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 [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.
>   
>  
>  -- 
> 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.
>   
>  
>  -- 
> 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.
>   
>  
>  -- 
> 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.
>
>
>  

-- 
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/-/JUgMoRWK35sJ.
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.

Reply via email to