2016-02-03 2 views
0

У меня есть настройка 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.

ответ

0

Поместите эту строку в инициализаторе и посмотреть, если это решает проблему, он должен стремится загрузить переводы до нескольких потоков запуска:

I18n.t(".") 
+0

я попробовать, что на самом деле, но странно I18n.backend.initialized? все еще возвращает false, когда я вызываю I18n.t (".") в инициализаторе – Gerold

+0

Возможно, это связано с jruby, потому что он работал, когда я использовал МРТ. И спасибо за sidekiq btw ;-) – Gerold

+0

Мне удалось заставить его «работать» сейчас. Я предполагаю, что это связано с ленивой загрузкой бэкэнда I18n. Чтобы заставить его работать, я создал обработчик sidekiq, который просто делает I18n.t («.»), И после этого я могу запустить столько рабочих, сколько мне нравится, и исключение не возникает. – Gerold

 Смежные вопросы

  • Нет связанных вопросов^_^