Примечание: использование Rails 3.1 и текущего гема delayed_job.
У меня есть модель User
, которая вызывает after_create :mail_confirmation
.
Метод mail_confirmation
выглядит следующим образом согласно инструкциям delayed_job:
def mail_confirmation
UserMailer.delay.registration_confirmation(self)
end
UserMailer
is:
class UserMailer < ActionMailer::Base
default from: "test@mysite.com"
def registration_confirmation(user)
@user = user
mail(:to => "#{user.full_name} <#{user.email}>", :subject => "Test registration email")
end
end
Задание ставится в очередь, и вывод rake jobs:work
создает впечатление, что оно успешно выполнено:
[Worker(host:mymac.local pid:73694)] Starting job worker
[Worker(host:mymac.local pid:73694)] Class#registration_confirmation completed after 1.3659
[Worker(host:mymac.local pid:73694)] 1 jobs processed at 0.7288 j/s, 0 failed ...
Нет ошибки, кромеэлектронная почта никогда не отправляется.Это работает нормально, если я удаляю delayed
из вызова метода в модели User
и работаю со стандартным методом deliver
:
def mail_confirmation
UserMailer.registration_confirmation(self).deliver
end
Как я могу узнать, что происходит, когда работа выполняетсяобработанный?Любая идея, как это исправить?
Обновление Похоже, это связано с этим:
NoMethodError с delayed_job (colleideidea gem)