2010-12-11 54 views
6

我使用delayed_job的宝石在这里:https://github.com/collectiveidea/delayed_job的Rails 3 - 的delayed_job(collectiveidea),设法拖延邮寄包装 - 错误:NoMethodError(未定义的方法'延迟”的UserMailer:类)

在我有以下观察员:

UserMailer.delay.msg_notification(record) 

在user_mailer.rb

class UserMailer < ActionMailer::Base 
... 
def msg_notification(record) 
    mail( 
      :to => "#{record.user.email}", 
      :subject => "Notification" 
     ) 
    end 
.. 
end 

但这个错误有:

NoMethodError (undefined method `delay' for UserMailer:Class): 

任何想法?谢谢

+0

您是否仔细检查过以确保gem位于您的gem文件中,并且您已经运行了bundle安装。您是否已经创建了文档中概述的gem所需的后端表? – 2010-12-11 22:47:02

回答

4

我在Rails应用程序中看到过这样的问题(2.3.8,但问题听起来一样)。基本上,有三种方法来延迟一个动作:

  1. MyClass.delay.foo(arg)
  2. handle_asynchronously :foo类定义中富
  3. MyClass.send_later(:foo, arg)

无论出于何种原因的定义之后,#3是只有在我们的所有开发机器上一致地工作。 #1在我们的开发服务器(Ubuntu)上死亡; #2在我们设计师的Mac上。但#3很好。

希望有帮助!

+0

[DEPRECATION]'object.send_later(:method)'已弃用。使用'object.delay.method',但它仍然不适用于我 – 2011-02-15 18:59:59

+0

@Lucas我只用Rails 2.3.8试过,所以你看到的可能是Rails 3的东西。或者你可以尝试一下其他的delayed_job分支 - 有一些分支(我认为我们使用了CollectiveIdea的分支)。或者它可能只是被全盘弃用 - 这将是一个可怕的消息,因为'send_later'是唯一一个可以持续工作的人!也许一个错误报告是为了... – 2011-02-15 21:43:28

2

此外,请检查您是否已安装软件包后重新启动服务器。这可能也是一个问题...

相关问题