Also, you might want to use class_eval for monkey patching. This way it errors 
out if the original implementation has not been loaded yet, so you'll know 
something has gone wrong. See here - 
http://practicalruby.blogspot.com/2007/02/reopen-with-moduleeval.html

Godfrey

On 2012-09-28, at 4:20 AM, Godfrey Chan wrote:

> If you are using Rails 3.2, you can tell Rails to load your engine before it 
> loads your app like so:
> 
> config.railties_order = [ Your::Engine, :main_app, :all ]
> 
> Then your monkey patching should work.
> 
> If you are on older versions of Rails you can monkey patch AS::Dependencies 
> like http://www.slideshare.net/AndyMaleh/rails-engine-patterns (Slide 17). 
> You probably want to watch the whole talk by Andy Maleh here.
> 
> Godfrey
> 
> On 2012-09-28, at 4:14 AM, Luís Ferreira wrote:
> 
>> Hum... Haven't thought of that. Thanks.
>> 
>> Still, this is not the expected behaviour for a ruby class right? Or am I 
>> completly wrong here?
>> On Sep 28, 2012, at 12:02 PM, Robert Pankowecki wrote:
>> 
>>> Probably because of the way how Rails is looking for constants ? I would 
>>> guess that it does not read the file from engine at all, and just reads the 
>>> file from your app.
>>> 
>>> Robert Pankowecki
>>> http://robert.pankowecki.pl
>>> 
>>> On Fri, Sep 28, 2012 at 12:59 PM, Luís Ferreira <zamith...@gmail.com> wrote:
>>> Hey guys,
>>> 
>>> I've been working on engines lately and I can't understand why a class in 
>>> an engine can't be monkey patched. Here's an example:
>>> 
>>> In the engine:
>>> 
>>> class MyEngine::MyController < ApplicationController
>>>   def index
>>>     @stuff = 1
>>>   end
>>> 
>>>   def show
>>>     ... something happens ...
>>>   end
>>> end
>>> 
>>> In the app including the engine:
>>> 
>>> class MyEngine::MyController < ApplicationController
>>>   def index
>>>     @stuff = 2
>>>   end
>>> end
>>> 
>>> In this example I would expect for only the index method to be overriden, 
>>> but it seems the entire class is overriden. Is there any reason for this 
>>> behaviour? Is this a feature or a bug?
>>> 
>>> 
>>> Regards,
>>> Luís Ferreira
>>> 
>>> 
>>> 
>>> --
>>> 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.
>>> 
>>> 
>>> 
>>> -- 
>>> 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.
>> 
>> Cumprimentos,
>> Luís Ferreira
>> 
>> 
>> 
>> 
>> -- 
>> 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.
> 

-- 
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