UPDATE:有许多人针对此问题的补丁:https://github.com/collectiveidea/delayed_job/commit/023444424166ba2ce011bfe2d47954e79edf6798NoMethodError用的delayed_job(collectiveidea宝石)
更新2:对于任何运行到在Heroku这个问题而言,我发现降级到耙0.8。 7和使用延迟作业版本2.1.4工作,而延迟作业V3没有(虽然与补丁它在本地工作)。这是在Bamboo-mri-1.9.2堆栈上。
我想在本地的rails 3.1.0应用程序上实现delayed_job。我跑的迁移和 安装宝石文件:
gem 'delayed_job'
gem 'delayed_job_active_record'
继上collectiveidea github上(https://github.com/collectiveidea/delayed_job)的文档。我从我的控制器使得延迟电话如下:
EventMailer.delay.event_message_email(current_user, @event_message)
这将导致任务被添加到工作表,但是当我运行耙作业:工作,它记录以下错误:
Class#event_message_email failed with NoMethodError: undefined method `event_message_email' for Class:Class - 6 failed attempts
我已经看过其他的delayed_job NoMethod错误问题,但没有解决这个特定的错误或提供解决方案。 collectiveidea页面提到这种没有传递方法调用的格式对于如何设置Rails 3邮件程序是一种破解,所以我想知道这个文档是否可能有些过时,并且如果有一种新的方法称为邮件程序方法?
更新:也毫无延迟地调用邮件方法工作正常,我在默认的rails服务器上运行它,所以在collectiveidea faq中提到的Thin问题不适用。谢谢
您最后一次重新启动“rake jobs:work”任务是什么时候?它需要在每次代码更改后重新启动。 – iwasrobbed 2011-12-22 16:56:38
EventMailer.event_message_email(current_user,@event_message).delay.deliver是否有效? – Unixmonkey 2011-12-25 20:56:35
@iWasRobbed:是的,我已经试过了 – tks 2011-12-27 02:14:24