gem: Spring

Rails Application Preloader

そもそもプリローダとは何ぞやと問えば、Rails アプリを事前にロードしておくことで rails rake コマンドを高速化するためのものだ。Spring の他には Zeus や Spork がある。

Spork は少しだけ使っていたことがあるが、事前の設定やら再起動が面倒で個人的にはあまり使い勝手がよろしくなかった。Zeus は知らない。

Spring は gem をインストールするだけで設定などは不要とのこと。

ただし、git のブランチを移動した場合などは再起動のため一度停止しなければならない。まあそれは当たり前か。

$ spring stop

Gemfile に書きたかったら書けばいいじゃない

Install the spring gem. You can add it to your Gemfile if you like but it's optional. You now have a spring command. Don't use it with bundle exec or it will be extremely slow.

Readme - Usage

要は「bundle exec と一緒に使うとめっちゃ遅くなるからやめとけ」とのことらしいので、素直に gem install でインストール。rbenv 環境なので rbenv rehash も忘れずに。

試してみた

まず一度停止。

$ spring stop
Spring stopped.

実行。

$ time spring rake spec
(略)
spring rake spec  0.11s user 0.02s system 2% cpu 4.554 total

もういっちょ。

$ time spring rake spec
(略)
spring rake spec  0.11s user 0.03s system 5% cpu 2.775 total

確かに速くはなっているのだが、まだクラスもテストケースも全然少ないせいか期待していたほどではないな……。

他にも試してみた

2回目以降の rails c が一瞬で起動する。すげえ。Spring 最高。