我正在尝试在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之前它正在工作......
有人可以为新手澄清......?
答案 0 :(得分:6)
您是否至少开始了1名delayed_job
工作人员?
rake jobs:work
实际上,当您在某个对象上调用delay
时,您只是排队一份工作。这意味着将在DelayedJob
表中创建一个包含与您的工作相关的所有元数据的新条目。
所以你仍然需要能够浏览所有DelayedJob
条目并逐个运行它们的东西,那就是上面显示的rake任务(worker)。
对于生产,它取决于您部署应用程序的位置。在Heroku上,您只需指定需要多少工人(Worker dynos
),他们就会自动启动。