私の RubyOnRails-App では、Capistrano のデプロイの最後にバックグラウンド ジョブを開始する必要があります。このために、 deploy.rb で次のことを試しました。
run "nohup #{current_path}/script/runner -e production 'Scheduler.start' &", :pty => true
これでうまくいくこともありますが、ほとんどの場合、プロセスは開始されません (= ps -aux にリストされていません)。そして、エラーメッセージはありません。また、ホームディレクトリにもレールアプリディレクトリにもnohup.outはありません。
scheduler.rb で nohup の代わりに trap('SIGHUP', 'IGNORE') を使用してみましたが、結果は同じです。
それを機能させる唯一の方法は、「:pty => true」を削除し、「cap deploy」の最後で手動で Ctrl-C を実行することです。でもこれは好きじゃない…
この Scheduler.start を呼び出す他の機会はありますか? または、さらにエラー メッセージを取得するには?
サーバーでRails 2.3.2、Capistrano 2.5.8、Ubuntu Hardyを使用しています