I18n::InvalidLocaleData: не могу загрузить переводы с sidekiq и jruby
У меня есть настройка 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 ruby, проблема началась, когда я переключился на jruby.
1 ответ
Поместите эту строку в инициализатор и посмотрите, решит ли она проблему, она должна загрузить переводы до запуска нескольких потоков:
I18n.t(".")