aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoshua Peek <josh@joshpeek.com>2010-01-04 19:38:56 -0600
committerJoshua Peek <josh@joshpeek.com>2010-01-04 19:40:16 -0600
commit76b5f18feba3f1d0507b4c4ec34d11d9bb1c493c (patch)
tree0b759bfcb59817b9a511b07f0be4743863ab8b9e
parent56b28ec8d6b226414fb240d4d4f6f1bd25292dc9 (diff)
downloadrails-76b5f18feba3f1d0507b4c4ec34d11d9bb1c493c.tar.gz
rails-76b5f18feba3f1d0507b4c4ec34d11d9bb1c493c.tar.bz2
rails-76b5f18feba3f1d0507b4c4ec34d11d9bb1c493c.zip
Default middleware stack needs to be available at configuration time
-rw-r--r--actionpack/lib/action_controller/railtie.rb20
-rw-r--r--railties/lib/rails/configuration.rb20
-rw-r--r--railties/test/application/middleware_test.rb12
3 files changed, 29 insertions, 23 deletions
diff --git a/actionpack/lib/action_controller/railtie.rb b/actionpack/lib/action_controller/railtie.rb
index f861d12905..6b94c32b2a 100644
--- a/actionpack/lib/action_controller/railtie.rb
+++ b/actionpack/lib/action_controller/railtie.rb
@@ -23,26 +23,6 @@ module ActionController
app.reload_routes!
end
- # Include middleware to serve up static assets
- initializer "action_controller.initialize_static_server" do |app|
- if app.config.serve_static_assets
- app.config.middleware.use(ActionDispatch::Static, Rails.public_path)
- end
- end
-
- initializer "action_controller.initialize_middleware_stack" do |app|
- middleware = app.config.middleware
- middleware.use(::Rack::Lock, :if => lambda { ActionController::Base.allow_concurrency })
- middleware.use(::Rack::Runtime)
- middleware.use(ActionDispatch::ShowExceptions, lambda { ActionController::Base.consider_all_requests_local })
- middleware.use(ActionDispatch::Callbacks, lambda { ActionController::Dispatcher.prepare_each_request })
- middleware.use(lambda { ActionController::Base.session_store }, lambda { ActionController::Base.session_options })
- middleware.use(ActionDispatch::ParamsParser)
- middleware.use(::Rack::MethodOverride)
- middleware.use(::Rack::Head)
- middleware.use(ActionDispatch::StringCoercion)
- end
-
initializer "action_controller.initialize_framework_caches" do
ActionController::Base.cache_store ||= RAILS_CACHE
end
diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb
index 7c1d549c9a..7929cba2fe 100644
--- a/railties/lib/rails/configuration.rb
+++ b/railties/lib/rails/configuration.rb
@@ -4,11 +4,25 @@ module Rails
# Temporarily separate the plugin configuration class from the main
# configuration class while this bit is being cleaned up.
class Railtie::Configuration
-
def self.default
@default ||= new
end
+ def self.default_middleware_stack
+ ActionDispatch::MiddlewareStack.new.tap do |middleware|
+ middleware.use('ActionDispatch::Static', lambda { Rails.public_path }, :if => lambda { Rails.application.config.serve_static_assets })
+ middleware.use('::Rack::Lock', :if => lambda { !ActionController::Base.allow_concurrency })
+ middleware.use('::Rack::Runtime')
+ middleware.use('ActionDispatch::ShowExceptions', lambda { ActionController::Base.consider_all_requests_local })
+ middleware.use('ActionDispatch::Callbacks', lambda { ActionController::Dispatcher.prepare_each_request })
+ middleware.use(lambda { ActionController::Base.session_store }, lambda { ActionController::Base.session_options })
+ middleware.use('ActionDispatch::ParamsParser')
+ middleware.use('::Rack::MethodOverride')
+ middleware.use('::Rack::Head')
+ middleware.use('ActionDispatch::StringCoercion')
+ end
+ end
+
attr_reader :middleware
def initialize(base = nil)
@@ -17,7 +31,7 @@ module Rails
@middleware = base.middleware.dup
else
@options = Hash.new { |h,k| h[k] = ActiveSupport::OrderedOptions.new }
- @middleware = ActionDispatch::MiddlewareStack.new
+ @middleware = self.class.default_middleware_stack
end
end
@@ -230,7 +244,7 @@ module Rails
def log_level
@log_level ||= RAILS_ENV == 'production' ? :info : :debug
end
-
+
def time_zone
@time_zone ||= "UTC"
end
diff --git a/railties/test/application/middleware_test.rb b/railties/test/application/middleware_test.rb
index 1b9c8c30fc..df564011d3 100644
--- a/railties/test/application/middleware_test.rb
+++ b/railties/test/application/middleware_test.rb
@@ -55,6 +55,18 @@ module ApplicationTests
assert_equal "Rack::Config", middleware.last
end
+ test "insert middleware after" do
+ add_to_config "config.middleware.insert_after ActionDispatch::Static, Rack::Config"
+ boot!
+ assert_equal "Rack::Config", middleware.second
+ end
+
+ test "insert middleware before" do
+ add_to_config "config.middleware.insert_before ActionDispatch::Static, Rack::Config"
+ boot!
+ assert_equal "Rack::Config", middleware.first
+ end
+
private
def boot!
require "#{app_path}/config/environment"