注意:使用Rails 3.1和當前delayed_job gem。我有User
模型,調用after_create :mail_confirmation
。Delayed_job不發送Rails 3郵件
的mail_confirmation
方法如下所示,每delayed_job的說明:
def mail_confirmation
UserMailer.delay.registration_confirmation(self)
end
的UserMailer
是:
class UserMailer < ActionMailer::Base
default from: "[email protected]"
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 ...
沒有錯誤,但電子郵件從不發送。
def mail_confirmation
UserMailer.registration_confirmation(self).deliver
end
我怎樣才能找到被處理作業時發生了什麼:如果我從方法調用中User
模型刪除delayed
去與標準deliver
方法能正常工作?任何想法如何解決它?
更新看來,它與此有關:
NoMethodError with delayed_job (collectiveidea gem)
當你是重新啓動最後一次你的'耙作業:工作任務?每次更改代碼時都需要重新啓動,因此它可能沒有最新的郵件程序代碼。 – iwasrobbed 2011-12-21 21:29:57
我每次更改代碼並重新嘗試時都會重新啓動它。 – Clay 2011-12-21 21:50:48
您的tlsmail gem是否已安裝並配置好? – 2011-12-23 11:49:11