発端:rspecがいつまでも動かない
今年の秋から参加したRails 4.2で開発しているプロジェクトで、なぜかrspecを走らせてもいつまでもスタート現象が起きました。だいたいこの手の原因はspringと分かっていたので、その都度kill & spring stopしてやり過ごしていました。
git checkout後が怪しい
何度も上記現象に会う中、原因が分からずに居たのですが、どうやらgitでブランチを切り替えたときに発生することがわかってきました。調べてみると、プロジェクトにSpring hangs a lotという同様の症状に関するissueが上がっていました。
対策:post-checkout hookを使う
原因が分かれば打ち手を考えることができます。今回は簡単で、git hookを使ってcheckout時に毎回springを止めればOKです。ワーキングコピーにある.git/hooksの下にpost-checkoutというファイルを作り、以下のように書きます。
# !/bin/bash
bin/spring stop
これでspringを手動で止めなくても良くなりました。