aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorKoichi ITO <koic.ito@gmail.com>2017-09-01 13:58:00 +0900
committerKoichi ITO <koic.ito@gmail.com>2017-09-02 13:12:59 +0900
commit3ee59eec2ffd07d1e4b12ef047495fb9d1ee13ce (patch)
treeb3bb9f6dc8e85671b567065a99a35831392db0d1 /actionpack
parentc2b2a8c74fcd2e32996641503ed029c8f7484b00 (diff)
downloadrails-3ee59eec2ffd07d1e4b12ef047495fb9d1ee13ce.tar.gz
rails-3ee59eec2ffd07d1e4b12ef047495fb9d1ee13ce.tar.bz2
rails-3ee59eec2ffd07d1e4b12ef047495fb9d1ee13ce.zip
Fix `can't modify frozen String` error in AC::Rendering
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_controller/metal/rendering.rb2
-rw-r--r--actionpack/test/controller/render_test.rb12
2 files changed, 13 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/metal/rendering.rb b/actionpack/lib/action_controller/metal/rendering.rb
index d32eabf9ba..dcb48be80a 100644
--- a/actionpack/lib/action_controller/metal/rendering.rb
+++ b/actionpack/lib/action_controller/metal/rendering.rb
@@ -42,7 +42,7 @@ module ActionController
def render_to_string(*)
result = super
if result.respond_to?(:each)
- string = ""
+ string = "".dup
result.each { |r| string << r }
string
else
diff --git a/actionpack/test/controller/render_test.rb b/actionpack/test/controller/render_test.rb
index 3619afc513..1ca668b9b1 100644
--- a/actionpack/test/controller/render_test.rb
+++ b/actionpack/test/controller/render_test.rb
@@ -606,6 +606,18 @@ class MetalRenderTest < ActionController::TestCase
end
end
+class ActionControllerRenderTest < ActionController::TestCase
+ class MinimalController < ActionController::Metal
+ include AbstractController::Rendering
+ include ActionController::Rendering
+ end
+
+ def test_direct_render_to_string_with_body
+ mc = MinimalController.new
+ assert_equal "Hello world!", mc.render_to_string(body: ["Hello world!"])
+ end
+end
+
class ActionControllerBaseRenderTest < ActionController::TestCase
def test_direct_render_to_string
ac = ActionController::Base.new()