Railsメモ(10) : Springでrails, rakeコマンドを高速化する
SpringというRails application preloaderを使用すると、railsやrakeコマンドの起動が高速化できる。
Rails 4.1以降では標準で組み込まれているため知らず知らずに使用していたようだ。
確かにGemfileには
group :development, :test do … gem 'spring' … end
の記述があり、rails new時には下記ログが表示されていた。
…
run bundle exec spring binstub --all
* bin/rake: spring inserted
* bin/rails: spring inserted
上記コマンドを実行したことでbin/springが生成され、bin/railsとbin/rakeには下記コードが挿入されている。
begin load File.expand_path("../spring", __FILE__) rescue LoadError end
Springの使用方法
./bin/railsや./bin/rakeを実行すれば、Springが起動していない場合は自動で起動するようだ。
確かに./bin/rake statsの実行で1回目は3秒以上かかっているが、2回目は1秒以内で完了している。
$ ./bin/spring stop Spring stopped. $ ./bin/spring status Spring is not running. $ time ./bin/rake stats …省略… ./bin/rake stats 0.17s user 0.04s system 6% cpu 3.553 total $ ./bin/spring status Spring is running: 11611 spring server | billboard | started 7 secs ago 11614 spring app | billboard | started 7 secs ago | development mode $ time ./bin/rake stats …省略… ./bin/rake stats 0.19s user 0.04s system 43% cpu 0.528 total
direnvを使用して./bin/railsや./bin/rakeの./binを省略する
今までは毎回./binを入力していたが、SpringのREADMEを見るとdirenvを使用するとこれを省略できるらしい。
インストール方法は下記の通り。makeとgolangが必要。
git clone https://github.com/direnv/direnv
cd direnv
make install
続いてシェルの設定ファイルに下記行を追加。今回はzshを使用しているので~/.zhsrcに追加する。
eval "$(direnv hook zsh)"
最後にアプリケーションのディレクトリに移動して下記内容の.envrcファイルを作成。
PATH_add bin
もし、ファイル作成後に下記エラーが出た場合はdirenv allowを実行する。
direnv: error .envrc is blocked. Run `direnv allow` to approve its content. $ direnv allow direnv: loading .envrc direnv: export ~PATH
これでアプリケーションのディレクトリに移動すると./binパスが自動でロードされるため、./binを付けずにrailsやrakeと入力するだけでよくなる。

- 作者: すがわらまさのり,前島真一,近藤宇智朗,橋立友宏
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/06
- メディア: 大型本
- この商品を含むブログ (8件) を見る