コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

RSpec(rspec-rails)のrails_helperの初期設定は「RAILS_ENVがなければtestにする」という設定なので気をつける

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'

関連リンク