From ae36fcedce1ffcf4f3331b444ea1779987c6615a Mon Sep 17 00:00:00 2001 From: Eugene Pimenov Date: Thu, 5 Feb 2009 07:33:34 +0300 Subject: [PATCH] Ruby 1.9 compat: call bytesize for content_length [#1881 state:committed] Signed-off-by: Jeremy Kemper --- actionpack/lib/action_controller/response.rb | 2 +- actionpack/test/controller/rack_test.rb | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/actionpack/lib/action_controller/response.rb b/actionpack/lib/action_controller/response.rb index 27860a6207..2daeeb9202 100644 --- a/actionpack/lib/action_controller/response.rb +++ b/actionpack/lib/action_controller/response.rb @@ -236,7 +236,7 @@ def set_content_length! elsif length = headers['Content-Length'] headers['Content-Length'] = length.to_s elsif !body.respond_to?(:call) && (!status || status.to_s[0..2] != '304') - headers["Content-Length"] = body.size.to_s + headers["Content-Length"] = (body.respond_to?(:bytesize) ? body.bytesize : body.size).to_s end end diff --git a/actionpack/test/controller/rack_test.rb b/actionpack/test/controller/rack_test.rb index e458ab6738..36ca205d8e 100644 --- a/actionpack/test/controller/rack_test.rb +++ b/actionpack/test/controller/rack_test.rb @@ -228,6 +228,21 @@ def test_simple_output assert_equal ["Hello, World!"], parts end + def test_utf8_output + @response.body = [1090, 1077, 1089, 1090].pack("U*") + @response.prepare! + + status, headers, body = @response.to_a + assert_equal 200, status + assert_equal({ + "Content-Type" => "text/html; charset=utf-8", + "Cache-Control" => "private, max-age=0, must-revalidate", + "ETag" => '"ebb5e89e8a94e9dd22abf5d915d112b2"', + "Set-Cookie" => [], + "Content-Length" => "8" + }, headers) + end + def test_streaming_block @response.body = Proc.new do |response, output| 5.times { |n| output.write(n) } -- GitLab