Rails サーバーを起動するときに、本番環境で script/delayed_job start を開始したいと考えています。とにかく私はそれを行うことができますか?
編集::
この行を config/initializers/delayed_job.rb に追加しました。
Delayed::Worker.new.start
しかし、レール アプリケーションを実行しているときに、遅延したジョブ サーバーが起動しません。他の解決策はありますか??
Rails サーバーを起動するときに、本番環境で script/delayed_job start を開始したいと考えています。とにかく私はそれを行うことができますか?
編集::
この行を config/initializers/delayed_job.rb に追加しました。
Delayed::Worker.new.start
しかし、レール アプリケーションを実行しているときに、遅延したジョブ サーバーが起動しません。他の解決策はありますか??
init.d ファイルをセットアップできますが、monit または god のいずれかをお勧めします。神様はルビーなのでおなじみですが、それはそれでちょっと漏れるということでもあります。God を実行する場合は、cron ジョブを使用して再起動することをお勧めします。 これは、サーバーでの monit の構成に関する非常に優れた投稿です。
私たちは神のルートに行きましたが、もう一度やり直す必要がある場合は、monit を実行します。
Capistrano を使用してアプリをデプロイし、デプロイのたびに DJ を開始/再起動する after:deploy フックを定義することをお勧めします。
また、DelayedJob よりも Resque を使用することをお勧めします。後者は理由もなく死ぬ傾向があり、通常は 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"
できるよ
Delayed::Worker.new.start
初期化子ディレクトリに (そこに新しい「.rb」ファイルを作成すると、アプリで開始されます)