Merge pull request #30361 from mfo/master

StreamingTemplateRenderer fails to forward I18n.locale in layouts
This commit is contained in:
Eileen M. Uchitelle 2017-12-11 08:08:03 -05:00 committed by GitHub
commit 4edce566ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 25 additions and 1 deletions

View File

@ -65,7 +65,9 @@ module ActionView
yielder = lambda { |*name| view._layout_for(*name) }
instrument(:template, identifier: template.identifier, layout: layout.try(:virtual_path)) do
outer_config = I18n.config
fiber = Fiber.new do
I18n.config = outer_config
if layout
layout.render(view, locals, output, &yielder)
else

View File

@ -0,0 +1,2 @@
layout.locale: <%= I18n.locale %>
<%= yield %>

View File

@ -0,0 +1 @@
view.locale: <%= I18n.locale %>

View File

@ -5,7 +5,7 @@ require "abstract_unit"
class TestController < ActionController::Base
end
class FiberedTest < ActiveSupport::TestCase
class SetupFiberedBase < ActiveSupport::TestCase
def setup
view_paths = ActionController::Base.view_paths
@assigns = { secret: "in the sauce", name: nil }
@ -25,7 +25,9 @@ class FiberedTest < ActiveSupport::TestCase
end
string
end
end
class FiberedTest < SetupFiberedBase
def test_streaming_works
content = []
body = render_body(template: "test/hello_world", layout: "layouts/yield")
@ -111,3 +113,20 @@ class FiberedTest < ActiveSupport::TestCase
buffered_render(template: "test/streaming", layout: "layouts/streaming_with_capture")
end
end
class FiberedWithLocaleTest < SetupFiberedBase
def setup
@old_locale = I18n.locale
I18n.locale = "da"
super
end
def teardown
I18n.locale = @old_locale
end
def test_render_with_streaming_and_locale
assert_equal "layout.locale: da\nview.locale: da\n\n",
buffered_render(template: "test/streaming_with_locale", layout: "layouts/streaming_with_locale")
end
end