RAILS_ENVを意図的に設定しているとRSpecが動かない場面に遭遇するので気をつける、というメモ。
環境
rspec-rails (3.8.1)
該当記述
rails g rspec:install
で生成されるファイルのテンプレートは以下のような記述になっている
ENV['RAILS_ENV'] ||= 'test'
rspec-rails/rails_helper.rb at master · rspec/rspec-rails
そのため、能動的に環境変数を書いているときに bundle exec rspec
をしてもうまく動かないときがあるので注意すること。
RAILS_ENVがある状態でRSpecを実行するとどうなるか
一番ありうるケースとしてはtest用のgemが入っておらず該当するクラスがありません!と言うエラーで落ちる。
例えば以下のような感じ
group :test do gem 'hogehogetestsupport' end
bundler: failed to load command: rspec (/usr/local/bundle/bin/rspec) NameError: uninitialized constant HogeHogeTestSupport
対応方法
RSpec走らせたいときはどのみちRAILS_ENVをtestにしたいはずなので、記述を以下のようにする。
ENV['RAILS_ENV'] = 'test'