Rails:延迟作业 – >发送异步邮件时不从“字段”中取出
我正在运行2.1.1,Rails 3,并且有一个heckuva时间让delayed_job gem工作。 如果我在邮件程序上删除handle_asynchronously,一切正常……但如果我把它重新插入,我得到:
nil的未定义方法`name’:NilClass(其中’name’来自@ contact.name …当handle_asynchronously被禁用时,它工作正常)。
如果我删除所有@contact模板信息,我得到:
“发送邮件所需的发件人(Return-Path,Sender或From)”?
这是我做错了什么或某种错误吗? 下面的相关代码(my@email.here替换为合法的电子邮件地址)
class ContactMailer "my@email.here" def contact_mail(contact) @contact = contact mail(:to => ENV['MANAGER_EMAIL'], :subject => 'Delayed Job Test', :from => 'my@email.here', :content_type => 'text/plain') end handle_asynchronously :contact_mail, :run_at => Proc.new { 2.seconds.from_now } end
任何建议非常感谢。
尝试使用实际的电子邮件地址调用该方法:
def contact_mail(contact_email) mail(:to => ENV['MANAGER_EMAIL'], :subject => 'Delayed Job Test', :from => contact_email, :content_type => 'text/plain') end
这是我唯一可以想到的,如果没有看到你的实际代码可能会有所帮助。 你的错误说你在一个零对象上调用了名字,但我看不到你在哪里调用.name …
我有同样的问题,通过删除这一行解决了它:
default :from => "my@email.here"
但是我不知道它为什么会撞到这条线..
Rails 3 Mailers
由于邮件如何在Rails 3中实现,我们不得不做一些工作来使delayed_job工作。
# without delayed_job Notifier.signup(@user).deliver # with delayed_job Notifier.delay.signup(@user)
删除.deliver
方法以使其工作。 它并不理想,但它是我们现在能做的最好的事情
https://github.com/collectiveidea/delayed_job#rails-3-mailers