Hi all, I have some code in a plugin's init.rb that used Rails.plugins[:plugin_name].code_paths += ... I spent a bit of time hacking engines to get it working, then I read Sven's helpful message at http://www.ruby-forum.com/topic/135196#602078(essentially "Contrary to Rails 1.2.x the init.rb file is now evalutated inside of the Plugin object." and just use code_paths += ...)
Btw, I had to use self.code_paths +=, not code_paths by itself. Is that expected? > "Hmm, we probably should put that into some kind of upgrade note. Or even > a rake task that goes through the init.rb files and removes those bits like > Rails.Engines[:name]? But maybe that's not worth the hassle?" Yes definitely a message on how to migrate from 1.2.x to 2.x engines. The rake tast is probably not necessary imo, we are used to reading the messages and making appropriate changes. Anyways I thought I would include my changes in case someone finds them useful. Definitely changing Rails.plugins[:plugin_name] to self is the better way. But maybe someone will need to use this way for some reason. -Andrew http://svn.rails-engines.org/engines/trunk/lib/engines/plugin.rb # Extends the superclass' load method to additionally mirror public assets def load(initializer) return if loaded? + + # add plugin before calling initializer and anything else since this seems + # to be the expected behavior + Engines.plugins << self + super initializer add_plugin_view_paths Assets.mirror_files_for(self) end http://svn.rails-engines.org/engines/trunk/lib/engines/plugin/loader.rb def register_plugin_as_loaded(plugin) super plugin - Engines.plugins << plugin register_to_routing(plugin) end
_______________________________________________ Engine-Developers mailing list [email protected] http://lists.rails-engines.org/listinfo.cgi/engine-developers-rails-engines.org
