Move Rails::Rack::Metal to Rails::Application::Metal and just add cascade if any metal was declared.
This commit is contained in:
parent
517b35a2bb
commit
edb8131535
|
@ -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'
|
||||
|
||||
|
|
|
@ -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)
|
|
@ -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')
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Reference in New Issue