kasei_sanのブログ

かせいさんのIT系のおぼえがきです。胡乱の方はnoteとtwitterへ

Rails4.1 から入ったSpringって何よ?

概要

  • rails c 等を叩く時に、毎回Railsの初期化を行わなくなるので、開発速度が向上するよ!!
  • Springサーバが起動して、変更を監視して必要に応じて再ロードする
  • Rails4.1以降は標準で入っていて、勝手に起動したり終了したりしてる

http://railsguides.jp/4_1_release_notes.html

SpringはRailsアプリケーション用のプリローダーです。アプリケーションをバックグラウンドで常駐させることで開発速度を向上させ、テストやrakeタスク、マイグレーションを実行するたびにRailsを起動しないで済むようにします。

Rails 4.1アプリケーションに含まれるbinstubは「spring化」されています。これは、アプリケーションのルートディレクトリでbin/railsおよびbin/rakeを実行すると自動的にspring環境をプリロードするということです。

Springのステータスを確認

$ bin/spring status

Springを手動リロード

$ touch config/application.rb

RSpecでSpringを使う

RspecのコマンドをSpringのに置き換える為のGemを入れる必要がある

#Gemfile
gem "spring-commands-rspec", group: :development
  • 他にも、cucumber とか各コマンド用のGemがあるので必要に応じて入れる

監視頻度の変更

重い時に

# config/spring.rb
Spring.watch_interval = 0.5

コードの修正が反映されないんですけど!!

2-3回ハマった

自分の会社の中の人が既に解決方法をblogに書いてた、さすが!!

Railsでapp以下の変更をSpringが検知しない問題を解決した(?) / マスタカの ChangeLog メモ

config/spring.rbを作って、以下を書けばOKです。
Spring.watch 'app'
他にもwatchしたいディレクトリやファイルがあればこのように書きます。
Spring.watch 'app', 'lib'

参考