diff --git a/actionpack/lib/action_controller/metal/live.rb b/actionpack/lib/action_controller/metal/live.rb index 226943ff264b25726465e4689f0bf2c72359c412..4674f0348deb543f1ef9ae02b8175bfeb7469140 100644 --- a/actionpack/lib/action_controller/metal/live.rb +++ b/actionpack/lib/action_controller/metal/live.rb @@ -121,6 +121,11 @@ def process(name) @_response.await_commit end + def response_body=(body) + super + response.stream.close if response + end + def set_response!(request) if request.env["HTTP_VERSION"] == "HTTP/1.0" super diff --git a/actionpack/test/controller/live_stream_test.rb b/actionpack/test/controller/live_stream_test.rb index 74b223e4f56e680e48d0797c8a5ad2e7859eea53..5ce1acccf15051342ea15394e5b42fd2265cfeb2 100644 --- a/actionpack/test/controller/live_stream_test.rb +++ b/actionpack/test/controller/live_stream_test.rb @@ -12,6 +12,10 @@ def self.controller_path 'test' end + def render_text + render :text => 'zomg' + end + def default_header response.stream.write "hi" response.stream.close @@ -107,5 +111,10 @@ def test_live_stream_default_header _, headers, _ = @response.prepare! assert headers['Content-Type'] end + + def test_render_text + get :render_text + assert @response.stream.closed?, 'stream should be closed' + end end end