さて、それで、私はウェブを見回しました、そしてそれは他の多くの人々がこの問題を抱えているようには見えません、しかし多分私たちがしていることに何か他のものが間違っています。
私はそれを有用なテストケースであると思うものにまで蒸留するように管理しました:
config / deploy.rb:
## Excerpt
task :big_delay, :roles => :web do
run "sleep 480"
run "echo Meow Meow Meow"
end
そしてstupid_script.sh:
#!/bin/sh
ssh foo 'sleep 480; echo Meow Meow Meow'
ここで、fooはデプロイ先の同じサーバーの名前です。
これらの両方を実行すると、もう一方のボックスに接続され、8分間何もせずに、役に立たないテキストを吐き出して完了します。
stupid_scriptは機能し、capタスクは失敗します。リモートコマンドがpsxfで終了するのがわかりますが、capはもう気付かないようです。スリープが240ではなく20の場合、キャップタスクは正常に機能します。
明らかに、このタスクは非常に役に立たないですが、これをトリガーする高価なものをデプロイで実行しているので、sshの責任を排除するためにこれを作成しました。
別のデータポイントは、ボックスにsshしてコードを配置し、そこからcap deployを実行すると、正常に機能します。
つまり...sshとcapistranoの間で奇妙な相互作用が起こっているようです。考え?