【问题标题】:undefined method `delay' for UserMailer:ClassUserMailer:Class 的未定义方法“延迟”
【发布时间】:2013-09-04 06:36:56
【问题描述】:


我在使用 delay 方法异步编写邮件通知过程时收到以下错误。

NoMethodError in SampleController#create

undefined method `delay' for UserMailer:Class

我的控制器中有以下代码。

UserMailer.delay.idea_author_notification(self,nfication)

我已经安装了delayed_job gem,也使用jobs:work rake 任务启动了delayed_job。

是否需要对使用延迟方法在后台执行邮件相关代码做一些其他更改?

请尽快帮我解决这个问题..

在此先感谢...

【问题讨论】:

  • 运行bundle后,你重启了你的服务器吗?每次在 Gemfile 中添加新 gem 时都需要这样做。
  • 您是否使用require 'delayed_job' 并重新启动服务器,请在您的Gemfile 中使用gem "delayed_job", :git => 'git://github.com/collectiveidea/delayed_job.git'
  • 我使用的是 Rails 2.3.5。所以我尝试了delayed_job 2.0.8 版本。我也重新启动了服务器。但是延迟方法仍然存在问题。
  • 仅供参考,如果是 rails 2.3.5,不应该是 deliver_idea_author_notification 确保不能解决问题,但仍然
  • 请附上您的邮件代码

标签: ruby-on-rails backgroundworker delay delayed-job


【解决方案1】:

任何动作邮件程序类都不存在delay方法。所以你不能为 UserMailer:Class 调用该方法。

为此,您可以在 rails 控制台中检查 mailer 类的所有方法。即
UserMailer.methods
要检查特定方法是否存在,请运行以下行。

UserMailer.methods.include?(:delay)
上面的行返回 false

如果您想使用延迟作业,请通过 github 中的以下链接。它肯定会帮助你。

delayed_jobs_for_rails2.x.x

【讨论】:

  • 这超出了主题。 delay 会在您添加delayed_job gem 时添加。这就是重点
  • 我使用的是 Rails 2.3.5。所以我尝试了delayed_job 2.0.8 版本。我也重新启动了服务器。但是延迟方法仍然存在问题。
  • @VentatK 该方法在 ruby​​ 中不受直接支持,但在使用 delayed_job gem 后它是 Object 的一部分
  • 是的,这里就是这样。如果我们使用delayed_job gem,我们可以调用delay方法。
  • 如果是 rails-2.3.5,我们需要将其添加到配置中。
猜你喜欢
  • 2017-07-24
  • 2011-05-24
  • 1970-01-01
  • 2011-12-02
  • 2015-09-13
  • 2016-08-18
  • 2011-09-12
  • 1970-01-01
  • 2017-11-08
相关资源
最近更新 更多