aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/engine.rb
diff options
context:
space:
mode:
authorPiotr Sarnacki <drogus@gmail.com>2011-11-22 23:26:27 +0100
committerPiotr Sarnacki <drogus@gmail.com>2011-11-23 21:36:33 +0100
commit40b19e063592fc30705f17aafe6a458e7b622ff2 (patch)
tree65f2617b16d37c97217868771f72caaecaec6a9c /railties/lib/rails/engine.rb
parent8549f7a4f0c30c37050666f5661ea9e270a298fd (diff)
downloadrails-40b19e063592fc30705f17aafe6a458e7b622ff2.tar.gz
rails-40b19e063592fc30705f17aafe6a458e7b622ff2.tar.bz2
rails-40b19e063592fc30705f17aafe6a458e7b622ff2.zip
Allow to change engine's loading priority with config.railties_order=
Diffstat (limited to 'railties/lib/rails/engine.rb')
-rw-r--r--railties/lib/rails/engine.rb24
1 files changed, 22 insertions, 2 deletions
diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb
index 335a0fb1b5..5c1af99fe2 100644
--- a/railties/lib/rails/engine.rb
+++ b/railties/lib/rails/engine.rb
@@ -330,6 +330,17 @@ module Rails
#
# MyEngine::Engine.load_seed
#
+ # == Loading priority
+ #
+ # In order to change engine's priority you can use config.railties_order in main application.
+ # It will affect the priority of loading views, helpers, assets and all the other files
+ # related to engine or application.
+ #
+ # Example:
+ #
+ # # load Blog::Engine with highest priority, followed by application and other railties
+ # config.railties_order = [Blog::Engine, :main_app, :all]
+ #
class Engine < Railtie
autoload :Configuration, "rails/engine/configuration"
autoload :Railties, "rails/engine/railties"
@@ -480,10 +491,19 @@ module Rails
@routes
end
+ def ordered_railties
+ railties.all + [self]
+ end
+
def initializers
initializers = []
- railties.all { |r| initializers += r.initializers }
- initializers += super
+ ordered_railties.each do |r|
+ if r == self
+ initializers += super
+ else
+ initializers += r.initializers
+ end
+ end
initializers
end