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 :Configurable, 'rails/application/configurable'
|
||||||
autoload :Configuration, 'rails/application/configuration'
|
autoload :Configuration, 'rails/application/configuration'
|
||||||
autoload :Finisher, 'rails/application/finisher'
|
autoload :Finisher, 'rails/application/finisher'
|
||||||
|
autoload :Metal, 'rails/application/metal'
|
||||||
autoload :Railties, 'rails/application/railties'
|
autoload :Railties, 'rails/application/railties'
|
||||||
autoload :RoutesReloader, 'rails/application/routes_reloader'
|
autoload :RoutesReloader, 'rails/application/routes_reloader'
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,16 @@
|
||||||
require 'action_dispatch'
|
require 'action_dispatch'
|
||||||
|
|
||||||
module Rails
|
module Rails
|
||||||
module Rack
|
class Application
|
||||||
class Metal
|
class Metal
|
||||||
def self.paths
|
def self.paths
|
||||||
@paths ||= []
|
@paths ||= []
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.metals
|
||||||
|
@metals ||= []
|
||||||
|
end
|
||||||
|
|
||||||
def initialize(list=nil)
|
def initialize(list=nil)
|
||||||
metals = []
|
metals = []
|
||||||
list = Array(list || :all).map(&:to_sym)
|
list = Array(list || :all).map(&:to_sym)
|
||||||
|
@ -26,6 +30,7 @@ module Rails
|
||||||
end
|
end
|
||||||
|
|
||||||
@metals = metals.map { |m| m.to_s.camelize.constantize }
|
@metals = metals.map { |m| m.to_s.camelize.constantize }
|
||||||
|
self.class.metals.concat(@metals)
|
||||||
end
|
end
|
||||||
|
|
||||||
def new(app)
|
def new(app)
|
|
@ -16,7 +16,7 @@ module Rails
|
||||||
middleware.use('::ActionDispatch::Cookies')
|
middleware.use('::ActionDispatch::Cookies')
|
||||||
middleware.use(lambda { ActionController::Base.session_store }, lambda { ActionController::Base.session_options })
|
middleware.use(lambda { ActionController::Base.session_store }, lambda { ActionController::Base.session_options })
|
||||||
middleware.use('::ActionDispatch::Flash', :if => lambda { ActionController::Base.session_store })
|
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('ActionDispatch::ParamsParser')
|
||||||
middleware.use('::Rack::MethodOverride')
|
middleware.use('::Rack::MethodOverride')
|
||||||
middleware.use('::ActionDispatch::Head')
|
middleware.use('::ActionDispatch::Head')
|
||||||
|
|
|
@ -99,7 +99,7 @@ module Rails
|
||||||
end
|
end
|
||||||
|
|
||||||
initializer :add_metals do
|
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
|
end
|
||||||
|
|
||||||
initializer :load_application_initializers do
|
initializer :load_application_initializers do
|
||||||
|
|
|
@ -3,7 +3,6 @@ module Rails
|
||||||
autoload :Debugger, "rails/rack/debugger"
|
autoload :Debugger, "rails/rack/debugger"
|
||||||
autoload :Logger, "rails/rack/logger"
|
autoload :Logger, "rails/rack/logger"
|
||||||
autoload :LogTailer, "rails/rack/log_tailer"
|
autoload :LogTailer, "rails/rack/log_tailer"
|
||||||
autoload :Metal, "rails/rack/metal"
|
|
||||||
autoload :Static, "rails/rack/static"
|
autoload :Static, "rails/rack/static"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -23,7 +23,6 @@ module ApplicationTests
|
||||||
"ActionDispatch::Cookies",
|
"ActionDispatch::Cookies",
|
||||||
"ActionDispatch::Session::CookieStore",
|
"ActionDispatch::Session::CookieStore",
|
||||||
"ActionDispatch::Flash",
|
"ActionDispatch::Flash",
|
||||||
"ActionDispatch::Cascade",
|
|
||||||
"ActionDispatch::ParamsParser",
|
"ActionDispatch::ParamsParser",
|
||||||
"Rack::MethodOverride",
|
"Rack::MethodOverride",
|
||||||
"ActionDispatch::Head",
|
"ActionDispatch::Head",
|
||||||
|
@ -70,6 +69,12 @@ module ApplicationTests
|
||||||
assert_equal "Rack::Config", middleware.first
|
assert_equal "Rack::Config", middleware.first
|
||||||
end
|
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
|
private
|
||||||
def boot!
|
def boot!
|
||||||
require "#{app_path}/config/environment"
|
require "#{app_path}/config/environment"
|
||||||
|
|
Loading…
Reference in New Issue