使用rails 2.3.11和delayed_job 2.0.4作为gem我在使用handle_asynchronously
时遇到错误:
在我的ActionMailer模型中,我明确了my_method并在声明后添加了'handle_asynchronously:my_method':
class MailSender < ActionMailer::Base
def my_method
...
end
handle_asynchronously :my_method
end
调用MailSender.deliver_my_method
时,任务已正确添加到队列中。但是当尝试处理它时,它会失败并显示错误消息:
undefined method `rappel_email_without_delay' for #<YAML::Object:0x1034b85f8>
延迟MailSender.delay.deliver_my_method
正在运行,任务正确处理 - 但我宁愿使用handle_asynchronously
取消我的模型,以确保邮件始终在后台发送......
答案 0 :(得分:6)
您需要使用
重新启动工作进程佣金工作:工作
答案 1 :(得分:5)
3.2.3也有这个问题。
通过在每次代码更改后重新启动DJ进程来修复它。
答案 2 :(得分:0)
您仍然可以使用handle_asynchronously宏声明,但使用ActionMailer调用延迟作业的语法略有不同。
# without delayed_job
MailSender.my_method.deliver
# with delayed_job
MailSerder.delay.my_method
这是从较旧版本的自述文件中提取的,但它不在当前的版本中,所以可能更新版本的延迟作业会解决这个问题。
答案 3 :(得分:0)
我遇到了同样的问题,最终遇到了以下post。基本上,delayed_job工作者似乎很难解组非ActiveRecord对象。对我有用的快速修复方法是在初始化程序或environment.rb中要求您的类,例如
# config/environment.rb
...
require 'mail_sender'