aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--railties/lib/rails/application.rb1
-rw-r--r--railties/lib/rails/application/metal.rb (renamed from railties/lib/rails/rack/metal.rb)7
-rw-r--r--railties/lib/rails/configuration.rb2
-rw-r--r--railties/lib/rails/engine.rb2
-rw-r--r--railties/lib/rails/rack.rb1
-rw-r--r--railties/test/application/middleware_test.rb7
6 files changed, 15 insertions, 5 deletions
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb
index 12aa279959..9e41210119 100644
--- a/railties/lib/rails/application.rb
+++ b/railties/lib/rails/application.rb
@@ -9,6 +9,7 @@ module Rails
autoload :Configurable, 'rails/application/configurable'
autoload :Configuration, 'rails/application/configuration'
autoload :Finisher, 'rails/application/finisher'
+ autoload :Metal, 'rails/application/metal'
autoload :Railties, 'rails/application/railties'
autoload :RoutesReloader, 'rails/application/routes_reloader'
diff --git a/railties/lib/rails/rack/metal.rb b/railties/lib/rails/application/metal.rb
index 732936da32..17786dd4ba 100644
--- a/railties/lib/rails/rack/metal.rb
+++ b/railties/lib/rails/application/metal.rb
@@ -1,12 +1,16 @@
require 'action_dispatch'
module Rails
- module Rack
+ class Application
class Metal
def self.paths
@paths ||= []
end
+ def self.metals
+ @metals ||= []
+ end
+
def initialize(list=nil)
metals = []
list = Array(list || :all).map(&:to_sym)
@@ -26,6 +30,7 @@ module Rails
end
@metals = metals.map { |m| m.to_s.camelize.constantize }
+ self.class.metals.concat(@metals)
end
def new(app)
diff --git a/railties/lib/rails/configuration.rb b/railties/lib/rails/configuration.rb
index 3c5c1c1e16..c5cb7b2d09 100644
--- a/railties/lib/rails/configuration.rb
+++ b/railties/lib/rails/configuration.rb
@@ -16,7 +16,7 @@ module Rails
middleware.use('::ActionDispatch::Cookies')
middleware.use(lambda { ActionController::Base.session_store }, lambda { ActionController::Base.session_options })
middleware.use('::ActionDispatch::Flash', :if => lambda { ActionController::Base.session_store })
- middleware.use(lambda { Rails::Rack::Metal.new(Rails.application.config.metals) })
+ middleware.use(lambda { Rails::Application::Metal.new(Rails.application.config.metals) }, :if => lambda { Rails::Application::Metal.metals.any? })
middleware.use('ActionDispatch::ParamsParser')
middleware.use('::Rack::MethodOverride')
middleware.use('::ActionDispatch::Head')
diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb
index 8cb938c2b9..ebbee67cf4 100644
--- a/railties/lib/rails/engine.rb
+++ b/railties/lib/rails/engine.rb
@@ -99,7 +99,7 @@ module Rails
end
initializer :add_metals do
- Rails::Rack::Metal.paths.unshift(*paths.app.metals.to_a)
+ Rails::Application::Metal.paths.unshift(*paths.app.metals.to_a)
end
initializer :load_application_initializers do
diff --git a/railties/lib/rails/rack.rb b/railties/lib/rails/rack.rb
index 4bc0c2c88b..1f20ceae44 100644
--- a/railties/lib/rails/rack.rb
+++ b/railties/lib/rails/rack.rb
@@ -3,7 +3,6 @@ module Rails
autoload :Debugger, "rails/rack/debugger"
autoload :Logger, "rails/rack/logger"
autoload :LogTailer, "rails/rack/log_tailer"
- autoload :Metal, "rails/rack/metal"
autoload :Static, "rails/rack/static"
end
end
diff --git a/railties/test/application/middleware_test.rb b/railties/test/application/middleware_test.rb
index 31696598ce..0b92cdba54 100644
--- a/railties/test/application/middleware_test.rb
+++ b/railties/test/application/middleware_test.rb
@@ -23,7 +23,6 @@ module ApplicationTests
"ActionDispatch::Cookies",
"ActionDispatch::Session::CookieStore",
"ActionDispatch::Flash",
- "ActionDispatch::Cascade",
"ActionDispatch::ParamsParser",
"Rack::MethodOverride",
"ActionDispatch::Head",
@@ -70,6 +69,12 @@ module ApplicationTests
assert_equal "Rack::Config", middleware.first
end
+ test "shows cascade if any metal exists" do
+ app_file "app/metal/foo.rb", "class Foo; end"
+ boot!
+ assert middleware.include?("ActionDispatch::Cascade")
+ end
+
private
def boot!
require "#{app_path}/config/environment"