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] <mailto:[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]
<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]
<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]
<mailto:rubyonrails-core%[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]
<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.
--
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.