aboutsummaryrefslogtreecommitdiffstats
path: root/railties/lib/rails/railtie/configuration.rb
diff options
context:
space:
mode:
Diffstat (limited to 'railties/lib/rails/railtie/configuration.rb')
-rw-r--r--railties/lib/rails/railtie/configuration.rb48
1 files changed, 42 insertions, 6 deletions
diff --git a/railties/lib/rails/railtie/configuration.rb b/railties/lib/rails/railtie/configuration.rb
index 16eccaccc4..f57d82a3d8 100644
--- a/railties/lib/rails/railtie/configuration.rb
+++ b/railties/lib/rails/railtie/configuration.rb
@@ -3,10 +3,50 @@ require 'rails/configuration'
module Rails
class Railtie
class Configuration
+ class MiddlewareStackProxy
+ def initialize
+ @operations = []
+ end
+
+ def insert_before(*args, &block)
+ @operations << [:insert_before, args, block]
+ end
+
+ alias insert insert_before
+
+ def insert_after(*args, &block)
+ @operations << [:insert_after, args, block]
+ end
+
+ def swap(*args, &block)
+ @operations << [:swap, args, block]
+ end
+
+ def use(*args, &block)
+ @operations << [:use, args, block]
+ end
+
+ def merge_into(other)
+ @operations.each do |operation, args, block|
+ other.send(operation, *args, &block)
+ end
+ other
+ end
+ end
+
def initialize
@@options ||= {}
end
+ # This allows you to modify the application's middlewares from Engines.
+ #
+ # All operations you run on the app_middleware will be replayed on the
+ # application once it is defined and the default_middlewares are
+ # created
+ def app_middleware
+ @@app_middleware ||= MiddlewareStackProxy.new
+ end
+
# Holds generators configuration:
#
# config.generators do |g|
@@ -28,12 +68,8 @@ module Rails
end
end
- def after_initialize_blocks
- @@after_initialize_blocks ||= []
- end
-
- def after_initialize(&blk)
- after_initialize_blocks << blk if blk
+ def after_initialize(&block)
+ ActiveSupport.on_load(:after_initialize, :yield => true, &block)
end
def to_prepare_blocks