У меня есть настройка jruby-9.0.5.0, и я пытаюсь выполнить параллельную обработку с использованием sidekiq. Все работает отлично, за исключением того, что, если я использую более 12 sidekiq темы, я постоянно получаю следующее сообщение об ошибке:I18n :: InvalidLocaleData: невозможно загрузить переводы с sidekiq и jruby
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 и второй строке, приводят к возникновению исключения. Я совершенно не понимаю, почему это происходит, возможно, что-то нужно сделать с одновременным доступом/некоторой странной проблемой многопоточности.
Update
Следует отметить, что это работает, когда я использовал МРТ рубин, проблема началась, когда я перешел на JRuby.
я попробовать, что на самом деле, но странно I18n.backend.initialized? все еще возвращает false, когда я вызываю I18n.t (".") в инициализаторе – Gerold
Возможно, это связано с jruby, потому что он работал, когда я использовал МРТ. И спасибо за sidekiq btw ;-) – Gerold
Мне удалось заставить его «работать» сейчас. Я предполагаю, что это связано с ленивой загрузкой бэкэнда I18n. Чтобы заставить его работать, я создал обработчик sidekiq, который просто делает I18n.t («.»), И после этого я могу запустить столько рабочих, сколько мне нравится, и исключение не возникает. – Gerold