質問: 最近PCの空きメモリが少なくなっているなあと思ったら、複数のRailsアプリでSpringが起動しっぱなしになっていることに気がつきました。(Macのアクティビティモニタで確認しました) `spring stop` してやるとプロセスが停止してメモリが解放されるのですが、いろんなRailsアプリを行き来していると毎回忘れずに stop させるというのも現実的ではありません。 たとえば、Powのように一定時間アイドル状態になっていると自動的にSpringを停止できたりすれば、不要なメモリの消費を抑えられると思います。 何らかの形で起動しっぱなしのSpringを止めたいのですが何かいい方法はないでしょうか?
回答: Spring によって起動する常駐プロセスに対して、一定時間が経過したらメインスレッドを停止する (== 常駐プロセスを `exit` させる) タイマーを仕込むのはどうでしょう。 以下のコードを手元で試したところ動作しました。これを `~/.spring.rb` か `config/spring.rb` に書いておきます。 `sleep` のあたりは使いやすいように変更してみてください。 ``` Thread.new do sleep ENV.fetch('SPRING_AUTOSTOP', 1.day).to_i Thread.main.exit end ``` (Rails 4.1.7 Spring 1.1.3) 参考: