提交 ee6e13f3 编写于 作者: B brainopia

Add `ActionController::Metal#set_request!`

Add `ActionController::Metal#set_request!` to set a request
on controller instance without calling dispatch.
上级 3f96b697
......@@ -190,11 +190,15 @@ def performed?
end
def dispatch(name, request) #:nodoc:
set_request!(request)
process(name)
to_a
end
def set_request!(request) #:nodoc:
@_request = request
@_env = request.env
@_env['action_controller.instance'] = self
process(name)
to_a
end
def to_a #:nodoc:
......
......@@ -8,9 +8,9 @@ module RackDelegation
delegate :headers, :status=, :location=, :content_type=,
:status, :location, :content_type, :response_code, :to => "@_response"
def dispatch(action, request)
def set_request!(request) #:nodoc:
super
set_response!(request)
super(action, request)
end
def response_body=(body)
......
......@@ -31,6 +31,15 @@ class BareTest < ActiveSupport::TestCase
controller.index
assert_equal ["Hello world"], controller.response_body
end
test "connect a request to controller instance without dispatch" do
env = {}
controller = BareController.new
controller.set_request! ActionDispatch::Request.new(env)
assert controller.request
assert controller.response
assert env['action_controller.instance']
end
end
class HeadController < ActionController::Metal
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册