capistranoでdelayed_jobを使用していますが、「script /delayd_jobstart」を使用してWebアプリケーションの起動時にdelayed_jobを開始する方法が必要です。このようにして、capistranoはデプロイ時に再起動できます。サーバーが再起動した場合、delayed_jobsはプロジェクトで起動するはずです。
これどうやってするの?環境ファイルでこれを行うことを検討する必要がありますか、それとも初期化子として検討する必要がありますか?
capistranoでdelayed_jobを使用していますが、「script /delayd_jobstart」を使用してWebアプリケーションの起動時にdelayed_jobを開始する方法が必要です。このようにして、capistranoはデプロイ時に再起動できます。サーバーが再起動した場合、delayed_jobsはプロジェクトで起動するはずです。
これどうやってするの?環境ファイルでこれを行うことを検討する必要がありますか、それとも初期化子として検討する必要がありますか?
@reboot
capistrano再起動レシピと組み合わせて、cronを使用して、起動時にcrontabの特別な時間を使用してdelayed_jobデーモンを起動することも非常に便利です。
@reboot /bin/bash -l -c 'cd /path/to/app && RAILS_ENV=production script/delayed_job restart'
また、スケジュールされたタスクを構成するときはいつでも一緒に使用するとさらに便利です。
job_type :envcommand, 'cd :path && RAILS_ENV=:environment :task'
every :reboot do
envcommand 'script/delayed_job restart'
end
cronのすべての実装が実際@reboot
にシステムの起動時にのみ実行されるかどうかはわかりませんが、少なくともUbuntuは起動時にのみ実行され、cronデーモンが起動または再起動するたびには実行されません。あなたがそれに合格すればrestart
、script/delayed_job
おそらくどちらの場合でもうまくいくでしょう。
restartコマンドを使用して1つのレシピを作成する必要があります。
namespace :delayed_job do
desc "Restart the delayed_job process"
task :restart, :roles => :app do
run "cd #{current_path}; RAILS_ENV=#{rails_env} script/delayed_job restart"
end
end
次に、展開の最後に実行されるように追加します。
after "deploy:update_code", "delayed_job:restart"
この質問には少し遅れていますが、delayed_jobのバージョン2.1.4にはcapistranoレシピがあります。
https://github.com/collectiveidea/delayed_job/wiki/Rails-3-and-Capistrano
それはDamienMathieuの答えですが、すでにdelayed_jobgemの一部です。
これは、Rails2と3の両方で機能するようになりました。
deploy.rbに、次の行を追加します。
require "delayed/recipes"
set :rails_env, 'production' #added for delayed_job
before "deploy:restart", "delayed_job:stop"
after "deploy:restart", "delayed_job:start"
after "deploy:stop", "delayed_job:stop"
after "deploy:start", "delayed_job:start"
monitを使用してdelayed_jobを起動および監視することが可能です:monitを
使用してdelayed_jobを監視する方法