当我启动rails服务器时,我想在我的生产中启动脚本/ delayed_job启动。 无论如何我能做到吗?
编辑::
我已将此行添加到我的config / initializers / delayed_job.rb。
Delayed::Worker.new.start
但是当我运行我的rails应用程序时,我的延迟作业服务器没有启动。 还有其他解决方案吗?
答案 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”文件,它将从您的应用程序开始)