注意:使用Rails 3.1和当前的delay_job gem。
我有一个称为User
的after_create :mail_confirmation
模型。
按照delay_job指令,mail_confirmation
方法如下所示:
def mail_confirmation
UserMailer.delay.registration_confirmation(self)
end
UserMailer
是: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 with delayed_job (collectiveidea gem)
最佳答案
是的,我有同样的问题。 @Clay是正确的,此刻存在问题:https://github.com/collectiveidea/delayed_job/issues/323
我通过恢复到以前的delay_job版本解决了这个问题。
gem 'delayed_job', '2.1.2'
关于ruby-on-rails - Delayed_job没有发送Rails 3电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8596592/