我有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时问题就出现了。
答案 0 :(得分:0)
将此行放在初始化程序中,看看它是否解决了问题,它应该在多个线程启动之前急切加载翻译:
I18n.t(".")