gpt4 book ai didi

ruby-on-rails - ruby 赛璐珞 "environment"

转载 作者:数据小太阳 更新时间:2023-10-29 09:00:35 25 4
gpt4 key购买 nike

我是 Celluloid 的新手,但我不明白为什么在我的 Rails 应用程序中,我的 futures 会失去当前的语言环境:

puts "locale OUTSIDE #{I18n.locale}"
data.map do |item|
Celluloid::Future.new { puts "locale INSIDE #{I18n.locale}"; serialize_item(item) }
end.map(&:value)

基本上我得到了类似的东西

locale OUTSIDE en
locale INSIDE it
locale INSIDE it
locale INSIDE it
locale INSIDE it
locale INSIDE itlocale INSIDE it
locale INSIDE it

locale INSIDE it

locale INSIDE it

当我更改语言环境时,futures 会继续考虑我的默认语言环境 :it

我觉得我缺少一些基本的东西......

最佳答案

Celluloid futures 在一个单独的线程池中执行(不是某些答案所建议的不同进程),

I18n.locale 值存储在一个变量范围内到单个线程 http://www.rubydoc.info/docs/rails/2.3.8/I18n%2FConfig%3Alocale :

The only configuration value that is not global and scoped to thread is :locale. It defaults to the default_locale.

这意味着您在工作线程之外设置的配置不适用于工作线程。

你需要:

  1. 如果您希望将配置传播到进程中的所有工作线程,请使用 I18n.default_locale,或者
  2. 将语言环境作为参数发送到 future 并进行设置(一定要在确保 block 中再次清除它,否则其他赛璐珞 Actor 可能会发生有趣的事情)

关于ruby-on-rails - ruby 赛璐珞 "environment",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36642386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com