aboutsummaryrefslogtreecommitdiffstats
path: root/actionview/lib/action_view/renderer
diff options
context:
space:
mode:
authormfo <fourcade.m@gmail.com>2017-11-25 19:37:33 +0100
committermfo <fourcade.m@gmail.com>2017-11-25 21:32:02 +0100
commit6d3b57fe423e18d61ae457a718c0f9901a173ace (patch)
treef4f9b0c1de239747691d6dd37e5bdc6f755353c9 /actionview/lib/action_view/renderer
parent72dec81206a4dfc0f14300fa9d40aea240d5b1da (diff)
downloadrails-6d3b57fe423e18d61ae457a718c0f9901a173ace.tar.gz
rails-6d3b57fe423e18d61ae457a718c0f9901a173ace.tar.bz2
rails-6d3b57fe423e18d61ae457a718c0f9901a173ace.zip
fix(streaming_template_renderer): I18n.locale broken in layout. I18n gem stores the current locale in Thread.current[:local] (see: https://github.com/svenfuchs/i18n/blob/master/lib/i18n.rb#L23). StreamingTemplateRenderer is implemented with Fiber which have its own stack of locals and can not access Thread.current.locals(keys, see: https://ruby-doc.org/core-2.2.0/Thread.html#class-Thread-label-Fiber-local+vs.+Thread-local).
Diffstat (limited to 'actionview/lib/action_view/renderer')
-rw-r--r--actionview/lib/action_view/renderer/streaming_template_renderer.rb2
1 files changed, 2 insertions, 0 deletions
diff --git a/actionview/lib/action_view/renderer/streaming_template_renderer.rb b/actionview/lib/action_view/renderer/streaming_template_renderer.rb
index ca49eb1144..276a28ce07 100644
--- a/actionview/lib/action_view/renderer/streaming_template_renderer.rb
+++ b/actionview/lib/action_view/renderer/streaming_template_renderer.rb
@@ -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