Ruby on rails Rails:延迟作业-->;不接';从';发送异步邮件时的字段

Ruby on rails Rails:延迟作业-->;不接';从';发送异步邮件时的字段,ruby-on-rails,delayed-job,Ruby On Rails,Delayed Job,我正在运行2.1.1和Rails 3,并且花了很长时间让延迟的任务gem工作。如果我在邮件程序上异步取出handle_,一切正常……但如果我把它放回去,我会得到: nil:NilClass的未定义方法'name'(其中'name'来自@contact.name…当禁用异步处理时,该方法可以正常工作) 如果我去掉所有@contact模板信息,我会得到: 发送邮件所需的发件人(返回路径、发件人或发件人) 这是我做错了什么还是有点小毛病?相关代码如下(my@email.here替换为合法的电子邮件地址

我正在运行2.1.1和Rails 3,并且花了很长时间让延迟的任务gem工作。如果我在邮件程序上异步取出handle_,一切正常……但如果我把它放回去,我会得到:

nil:NilClass的未定义方法'name'(其中'name'来自@contact.name…当禁用异步处理时,该方法可以正常工作)

如果我去掉所有@contact模板信息,我会得到:

发送邮件所需的发件人(返回路径、发件人或发件人)

这是我做错了什么还是有点小毛病?相关代码如下(my@email.here替换为合法的电子邮件地址)

class ContactMailer”my@email.here"  
def联系人\电子邮件(联系人)
@接触
邮件(:to=>ENV['MANAGER_EMAIL'],:subject=>'Delayed Job Test',:from=>'my@email.here',:content_type=>text/plain')
结束
异步处理\u:contact\u mail,:run\u at=>Proc.new{2.seconds.from\u now}
结束

非常感谢您的建议。

尝试使用实际电子邮件地址调用该方法:

def contact_mail(contact_email)
  mail(:to => ENV['MANAGER_EMAIL'], :subject => 'Delayed Job Test', :from => contact_email, :content_type => 'text/plain')
end

这是我能想到的唯一一件在没有看到实际代码的情况下可能会有所帮助的事情。您的错误显示您正在调用一个nil对象的name,但我看不到您调用的任何位置。name…

我遇到了相同的问题,并通过删除此行解决了此问题:

default :from => "my@email.here" 
但我不知道它为什么会因为这条线路而崩溃。

Rails 3邮件程序

由于邮件程序是如何在Rails3中实现的,我们不得不做一些变通来让延迟的工作正常工作

# without delayed_job
Notifier.signup(@user).deliver

# with delayed_job
Notifier.delay.signup(@user)
删除
.deliver
方法以使其正常工作。这并不理想,但这是我们目前所能做的最好的

# without delayed_job
Notifier.signup(@user).deliver

# with delayed_job
Notifier.delay.signup(@user)