Rails:delayed_job邮件没有发送

时间:2012-05-12 21:51:05

标签: ruby-on-rails delayed-job

我正在尝试在Rails 3.2中使用delayed_job gem https://github.com/collectiveidea/delayed_job在后台发送邮件。

我安装了宝石

 gem 'delayed_job_active_record'

我按照指示生成了表并运行了迁移

$ rails generate delayed_job:active_record
$ rake db:migrate

注意到Rails 3中有针对邮件程序的特殊说明

     # without delayed_job
Notifier.signup(@user).deliver

# with delayed_job
Notifier.delay.signup(@user)

我做了

 def send_welcome_email

    #UserMailer.welcome_email(self).deliver  <-- original code that worked

   UserMailer.delay.welcome_email(self)        

  end

但是邮件没有发送。在我尝试使用delayed_job之前它正在工作......

有人可以为新手澄清......?

1 个答案:

答案 0 :(得分:6)

您是否至少开始了1名delayed_job工作人员?

rake jobs:work

实际上,当您在某个对象上调用delay时,您只是排队一份工作。这意味着将在DelayedJob表中创建一个包含与您的工作相关的所有元数据的新条目。

所以你仍然需要能够浏览所有DelayedJob条目并逐个运行它们的东西,那就是上面显示的rake任务(worker)。

对于生产,它取决于您部署应用程序的位置。在Heroku上,您只需指定需要多少工人(Worker dynos),他们就会自动启动。