いくつかのプロジェクトでは、rake server
のようなレーキタスクを用意して、必要な手段でそのアプリケーションにサービスを提供したいと考えています。ここでは一例です:Rakeの長時間実行可能なシェルコマンドは正常に中断できますか?
task :server do
%x{bundle exec rackup -p 1234}
end
これは動作しますが、私はそれを停止する準備ができていたときに、Ctrl+c
を押すと、正常にシャットダウンしません。それはrake aborted!
というレーキタスク自体を中断し、スタックトレースを与えます。場合によっては、Ctrl+c
を2回実行する必要があります。
Signal.trap
と書いて、これをもっとうまく中断することができました。簡単な方法がありますか?
あなたのケースに当てはまるが、私のレーキタスクで同様の問題が発生しているかどうかはわかりません。問題は特定のコードブロックで例外を捕まえていたことです。それはまた、Ctrl + Cを飲み込んでいたようです。私がStandardErrorをキャッチするとすぐに、Ctrl + Cがそのまま動作し始めました。 – Renra