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件) を見る