我希望在启动Rails服务器时,可以启动生产环境下的脚本/延迟作业。有没有什么办法可以做到这一点?
编辑::
我已经在config/initializers/delayed_job.rb中添加了以下行。
Delayed::Worker.new.start
但是当我运行我的Rails应用程序时,我的延迟作业服务器没有启动。是否有其他解决方案?
我希望在启动Rails服务器时,可以启动生产环境下的脚本/延迟作业。有没有什么办法可以做到这一点?
编辑::
我已经在config/initializers/delayed_job.rb中添加了以下行。
Delayed::Worker.new.start
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"
你可以设置一个init.d文件,但我建议使用monit或god。God是ruby编写的,所以它很熟悉,但这也意味着它会泄漏一些信息。如果你要运行God,我建议设置一个cron job来重启它。这是一篇非常好的文章,介绍了如何在服务器上配置monit。
我们选择了God,但如果我们再做一次选择,我们会选择monit。
你可以做到
Delayed::Worker.new.start
在你的初始化器目录中(在那里创建一个新的“.rb”文件,它将与你的应用程序一起启动)