使用rails启动delayed_job

时间:2010-06-21 20:00:26

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

当我启动rails服务器时,我想在我的生产中启动脚本/ delayed_job启动。 无论如何我能做到吗?

编辑::

我已将此行添加到我的config / initializers / delayed_job.rb。

Delayed::Worker.new.start 

但是当我运行我的rails应用程序时,我的延迟作业服务器没有启动。 还有其他解决方案吗?

3 个答案:

答案 0 :(得分:0)

我建议您使用Capistrano部署您的应用并定义after:deploy hook以在每次部署时启动/重启DJ。

我还建议使用Resque over DelayedJob,因为后者有没有任何理由死的倾向,并且通常需要Monit / God监控并重新启动它。

namespace :delayed_job do
  desc "Start delayed_job process" 
  task :start, :roles => :app do
    run "cd #{current_path}; script/delayed_job start #{rails_env}" 
  end

  desc "Stop delayed_job process" 
  task :stop, :roles => :app do
    run "cd #{current_path}; script/delayed_job stop #{rails_env}" 
  end

  desc "Restart delayed_job process" 
  task :restart, :roles => :app do
    run "cd #{current_path}; script/delayed_job restart #{rails_env}" 
  end
end

after "deploy:start", "delayed_job:start" 
after "deploy:stop", "delayed_job:stop" 
after "deploy:restart", "delayed_job:restart"

答案 1 :(得分:0)

您可以设置init.d文件,但我建议使用monit或god。上帝是红宝石,所以它很熟悉,但这也意味着它有点泄漏。如果你打算运行上帝,我建议你重新启动一个cron作业。关于在服务器上配置monit的This is a VERY good post

我们走了上帝路线,但如果我们再做一遍 - 我们会做monit。

答案 2 :(得分:-1)

你可以做到

Delayed::Worker.new.start
在您的初始化程序目录中

(在那里创建一个新的“.rb”文件,它将从您的应用程序开始)