I18n :: InvalidLocaleData:无法使用sidekiq和jruby加载翻译

时间:2016-02-03 14:21:15

标签: multithreading jruby sidekiq rails-i18n jrubyonrails

我有jruby-9.0.5.0设置,我尝试使用sidekiq进行一些并行处理。一切正常,但如果我使用超过12个sidekiq线程,我会不断收到以下错误消息:

WARN: I18n::InvalidLocaleData: can not load translations from /Users/geroldboehler/.rvm/gems/jruby-9.0.5.0/gems/rails-i18n-4.0.5/lib/rails_i18n/../../rails/locale/ne.yml: java.lang.ArrayIndexOutOfBoundsException
WARN: /Users/geroldboehler/.rvm/gems/jruby-9.0.5.0/gems/i18n-0.7.0/lib/i18n/backend/base.rb:184:in `load_yml'

导致此问题的行如下:

  I18n.t(".") unless I18n.backend.initialized?
  display_names = I18n.backend.send(:translations)[:de][:shoptwist][:display_names]

我需要加载存储在转换yml中的值,第二行会导致异常发生。我完全不知道为什么会发生这种情况,它可能需要同时访问/一些奇怪的多线程问题。

更新

我应该提一下,当我使用MRI红宝石时,这种方法很有用,当我改用jruby时问题就出现了。

1 个答案:

答案 0 :(得分:0)

将此行放在初始化程序中,看看它是否解决了问题,它应该在多个线程启动之前急切加载翻译:

I18n.t(".")