Rspecを、bin/rspecで実行すると、viewが更新されていない現象が起きた。
そこでbundle exec rspecで実行すると、ちゃんと最新のviewとなった。
この違いはなんなのか?それぞれの動きについて説明します。
bin/rspec
・そのRailsアプリケーションのルートディレクトリ直下の bin ディレクトリにある rspec というスクリプトを呼び出している。
・bin/ を付けておけば、Spring経由で高速にコマンドが実行される
・bundlerが、gemのバージョンや依存関係も正しく処理してくれる
bundle exec rspec
・Gemfile.lockに書かれているバージョンのgemが動く
・bundle exec を付けることで意図しないバージョンが起動することを防ぐ
(だから別にrspecだけでできないこともない)
結論
bin/rspecでvieが更新されなかったのは、gemとの依存関係が逆に悪さをしているように考えられる。binによる高速処理はあきらめてbundle execで実行する。
コメント