mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
29dfe05e07
and plugins inside engines It seems that plugins inside a Rails 3.1 application proper (i.e. in /vendor/plugins) are initialized before engines and plugins inside engines. After some debugging, I found the culprit in Rails::Application::Railties#all: def all(&block) @all ||= railties + engines + super @all.each(&block) if block @all end The call to super here implicitly passes the &block argument, which has the unfortunate side-effect of adding the plugin initializers first (in front of other railties and engines) in the case of Rails::Engine#initializers: def initializers initializers = [] railties.all { |r| initializers += r.initializers } initializers += super initializers end The solution here is to replace the super call with a call to #plugins.
13 lines
264 B
Ruby
13 lines
264 B
Ruby
require 'rails/engine/railties'
|
|
|
|
module Rails
|
|
class Application < Engine
|
|
class Railties < Rails::Engine::Railties
|
|
def all(&block)
|
|
@all ||= railties + engines + plugins
|
|
@all.each(&block) if block
|
|
@all
|
|
end
|
|
end
|
|
end
|
|
end
|