提交 909443ea 编写于 作者: J Joshua Peek

Expose last controller in rack env["action_controller.instance"]

上级 d1ffc54c
......@@ -60,6 +60,7 @@ def status=(status)
# :api: private
def dispatch(name, env)
@_env = env
@_env['action_controller.instance'] = self
process(name)
to_a
end
......
......@@ -240,9 +240,9 @@ def process(method, path, parameters = nil, rack_environment = nil)
path = location.query ? "#{location.path}?#{location.query}" : location.path
end
[ControllerCapture, ActionController::Testing].each do |mod|
unless ActionController::Base < mod
ActionController::Base.class_eval { include mod }
unless ActionController::Base < ActionController::Testing
ActionController::Base.class_eval do
include ActionController::Testing
end
end
......@@ -269,16 +269,15 @@ def process(method, path, parameters = nil, rack_environment = nil)
end
session = Rack::Test::Session.new(@mock_session)
@controller = ActionController::Base.capture_instantiation do
session.request(path, env)
end
session.request(path, env)
@request_count += 1
@request = ActionDispatch::Request.new(session.last_request.env)
@response = ActionDispatch::TestResponse.from_response(@mock_session.last_response)
@html_document = nil
@controller = session.last_request.env['action_controller.instance']
return response.status
end
......@@ -296,31 +295,6 @@ def generic_url_rewriter
end
end
# A module used to extend ActionController::Base, so that integration tests
# can capture the controller used to satisfy a request.
module ControllerCapture #:nodoc:
extend ActiveSupport::Concern
included do
alias_method_chain :initialize, :capture
end
def initialize_with_capture(*args)
initialize_without_capture
self.class.last_instantiation ||= self
end
module ClassMethods #:nodoc:
mattr_accessor :last_instantiation
def capture_instantiation
self.last_instantiation = nil
yield
return last_instantiation
end
end
end
module Runner
def app
@app
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册