Delayed_job: NoMethodError: неопределенный метод `my_method_without_delay ' - PullRequest
4 голосов
/ 10 августа 2011

Используя рельсы 2.3.11 и delayed_job 2.0.4 в качестве драгоценного камня, я получаю ошибку при использовании handle_asynchronously:

В моей модели ActionMailer я удалил my_method и добавил «handle_asynchronously: my_method» сразу послеобъявление:

class MailSender < ActionMailer::Base
    def my_method
        ...
    end
    handle_asynchronously :my_method
end

При вызове MailSender.deliver_my_method задача правильно добавляется в очередь.Но при попытке обработать его не удается с сообщением об ошибке:

undefined method `rappel_email_without_delay' for #<YAML::Object:0x1034b85f8>

Задержка с MailSender.delay.deliver_my_method работает и задача выполнена правильно - но я бы предпочел использовать handle_asynchronously для моей модели, чтобыпочта всегда отправляется в фоновом режиме ...

Ответы [ 4 ]

6 голосов
/ 09 февраля 2012

Вам нужно перезапустить рабочие процессы, используя

грабли работы: работа

5 голосов
/ 15 мая 2012

Также была эта проблема в 3.2.3.

Исправлено: перезапуск процесса DJ после каждого изменения кода.

0 голосов
/ 03 ноября 2011

Я столкнулся с той же проблемой и в итоге наткнулся на следующую запись .По сути, у работника delayed_job возникают трудности с демонтажем объектов, отличных от ActiveRecord.Быстрое решение, которое сработало для меня, это требование вашего класса в инициализаторе или environment.rb, например

# config/environment.rb
...
require 'mail_sender'
0 голосов
/ 10 августа 2011

Вы все еще можете объявить с помощью макроса handle_asynchronously, но синтаксис для вызова отложенных заданий с помощью ActionMailer немного отличается.

# without delayed_job
MailSender.my_method.deliver

# with delayed_job
MailSerder.delay.my_method

Это было взято из более старой версии README, но ее нет в текущей, так что, возможно, более новая версия отложенных заданий работала над этим нюансом.

...