我正在使用Ruby on Rails 3.0.9,我正在尝试为我的Web应用程序设置delay_job gem,以便以这种方式发送电子邮件:
Notifier.delay.send_email(@user)
除了在官方gem文档中写的,要启动我的“延迟作业”,我应该使用以下代码行之一
$ RAILS_ENV=production script/delayed_job start
$ RAILS_ENV=production script/delayed_job stop
# Runs two workers in separate processes.
$ RAILS_ENV=production script/delayed_job -n 2 start
$ RAILS_ENV=production script/delayed_job stop
或调用rake jobs:work
任务。
在生产模式中,我更喜欢使用其中一个RAILS_ENV=...
语句,但我想知道在哪里(即在哪个文件中)我应该添加该代码以便在应用程序启动时启动worker(BTW:此时我没有使用Capistrano来部署我的应用程序)。
更多,我想知道究竟什么是“工人”,如果我的VPS托管(运行Ubuntu 10.04 LTS)可以运行多个或者如何知道我的服务器可以运行多少工人。
最后,我想知道我可以在config/initializers/delayed_job.rb
文件中添加哪些选项,以及是否有关于Delay Job gem的一些建议或技巧。
答案 0 :(得分:1)
要在应用程序启动时启动工作程序,我只需从initalizer调用正确的命令。执行此操作的代码如下所示:
system "RAILS_ENV=production #{Rails.root.join('script','delayed_job')} stop"
system "RAILS_ENV=production #{Rails.root.join('script','delayed_job')} -n 2 start"
这条路可能有点偏离,很可能是一种更清洁的方式,但我不知道任何一件事情。