提交 c4d85dfb 编写于 作者: E eileencodes

Handle response_body= when body is nil

There are some cases when the `body` in `response_body=` can be set to
nil. One of those cases is in `actionpack-action_caching` which I found
while upgrading it for Rails 5.

It's not possible to run `body.each` on a `nil` body so we have to
return after we run `response.reset_body!`.
上级 6162c49e
......@@ -174,6 +174,7 @@ def url_for(string)
def response_body=(body)
body = [body] unless body.nil? || body.respond_to?(:each)
response.reset_body!
return unless body
body.each { |part|
next if part.empty?
response.write part
......
......@@ -40,6 +40,22 @@ class BareTest < ActiveSupport::TestCase
end
end
class BareEmptyController < ActionController::Metal
def index
self.response_body = nil
end
end
class BareEmptyTest < ActiveSupport::TestCase
test "response body is nil" do
controller = BareEmptyController.new
controller.set_request!(ActionDispatch::Request.empty)
controller.set_response!(BareController.make_response!(controller.request))
controller.index
assert_equal nil, controller.response_body
end
end
class HeadController < ActionController::Metal
include ActionController::Head
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册