2

我正在尝试在 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之前它正在工作......

有人可以为新手澄清一下吗...?

4

1 回答 1

7

您是否至少启动了 1delayed_job名工人?

rake jobs:work

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

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

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

于 2012-05-12T21:58:07.793 回答