Forum: Rails Engines development Rails.plugins[:plugin_name] comments and patch

Bfccdb1c41c334fec20e5ede3a7ccfcc?d=identicon&s=25 Andrew Roth (andrewroth)
on 2007-12-27 06:08
(Received via mailing list)
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/eng...

    # 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/eng...

        def register_plugin_as_loaded(plugin)
          super plugin
-         Engines.plugins << plugin
          register_to_routing(plugin)
        end
This topic is locked and can not be replied to.