更新:这个问题已经有一个补丁了:https://github.com/collectiveidea/delayed_job/commit/023444424166ba2ce011bfe2d47954e79edf6798 https://github.com/collectiveidea/delayed_job/commit/023444424166ba2ce011bfe2d47954e79edf6798
更新 2:对于在 Heroku 上遇到此问题的任何人,我发现降级到 Rake 0.8.7 并使用延迟作业版本 2.1.4 可以工作,而延迟作业 v3 则不行(尽管使用补丁后它可以在本地工作) 。这是在 Bamboo-mri-1.9.2 堆栈上。
我正在尝试在本地 Rails 3.1.0 应用程序上实现delayed_job。我运行了迁移并
安装了 gem 文件:
gem 'delayed_job'
gem 'delayed_job_active_record'
遵循 Collectiveidea github 上的文档(https://github.com/collectiveidea/delayed_job https://github.com/collectiveidea/delayed_job)。我正在从我的控制器发出延迟呼叫,如下所示:
EventMailer.delay.event_message_email(current_user, @event_message)
这会导致任务被添加到作业表中,但是当我运行 rake jobs:work 时,它会记录以下错误:
Class#event_message_email failed with NoMethodError: undefined method `event_message_email' for Class:Class - 6 failed attempts
我查看了 SO 上的其他延迟作业 NoMethod 错误问题,但没有一个解决此特定错误或提供解决方案。 Collectiveidea 页面提到这种没有传递方法调用的格式是对 Rails 3 邮件程序设置方式的黑客攻击,所以我想知道这个文档是否可能有些过时,以及是否有一种新的方法来调用邮件程序方法?
更新:同样毫不延迟地调用 mailer 方法也可以正常工作,并且我在默认的 Rails 服务器上运行它,因此在 Collectiveidea 常见问题解答中提到的 Thin 问题不适用。谢谢