2015-11-20 6 views
2

Иногда у меня есть ошибки в delayed_job работника NameError: uninitialized constant Notifiers::MessageNotifierJob полный трассировку https://gist.github.com/olegantonyan/eeca9d612f9a10864efeDelayedJob иногда не может загрузить класс задания с пространством имен

Notifiers::MessageNotifierJob определяется в app/jobs/notifiers/message_notifier_job.rb

К иногда я имею в виду, что эта работа может не - > retry -> преуспеть. То же самое с другими заданиями, которые имеют пространство имен. Работа без пространства имен работает нормально.

Я пытался добавить app/jobs/ к дорожкам явно автозагрузки без везения config.autoload_paths += Dir[ Rails.root.join('app', 'jobs', '**/') ]

Работы, о которой сам выглядит как этот

module Notifiers 
    class MessageNotifierJob < BaseNotifierJob 
    def perform(from, to, text) 
     # some code to send slack notification 
    end 
    end 
end 

ответ

1

решенных. Задержка работы или автозагрузчик не виноваты.

За неделю до добавления этих новых рабочих мест (как Notifiers::MessageNotifierJob) Я возросшее число задержанных рабочих заданий (с использованием capistrano3-delayed-job камня) от 1 до 4. Но, capistrano3-отсроченной работу не убили старый процесс работы замедленного, и только начал новый 4. Таким образом, я закончил с 1 старой работой без каких-либо знаний о моих новых классах работы. Всякий раз, когда этот старый процесс выбирал работу, он терпел неудачу. Затем один из новых процессов выбрал эту работу и преуспел.

+0

Это должно быть отмечено как правильный ответ. Иди в эту же проблему. – nicosuria