设置Delay Jobs gem

时间:2011-08-09 04:52:35

标签: ruby-on-rails ruby ruby-on-rails-3 gem delayed-job

我正在使用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的一些建议或技巧。

1 个答案:

答案 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"

这条路可能有点偏离,很可能是一种更清洁的方式,但我不知道任何一件事情。