Rails 3.2.7がリリースされましたが、アップデートする際に注意です。
おそらくバグだと思うのですが、引数なしでrake specした際、Rails.envがdevelopmentになってしまいます。
# まずはRails 3.2.7をインストール rails new rails327 --skip-bundle cd rails327 # Gemfileを書いてbundle vi Gemfile # 下記参照 bundle rake db:migrate # rspecを設定 rails g rspec:install echo "p Rails.env" >> spec/spec_helper.rb echo "require 'spec_helper'" > spec/hoge_spec.rb # spec実行 rake spec
Gemfileには、以下のように書きます。
gem 'rails', '3.2.7' # バージョンを明示的に指定 # 追加 gem 'rspec' gem 'rspec-rails'
これでrake specを実行すると、Rails 3.2.6では"test"と表示されるのですが、Rails 3.2.7では"development"と表示されます。
恐ろしいことに、development.rbが読まれ、developmentのデータベースがテストで上書きされます。
rake spec RAILS_ENV=test
なら、問題は発生しません。
また、以下のようにしてもOKです。
# spec/spec_helper.rb # ENV["RAILS_ENV"] ||= 'test' # これを書き換える ENV["RAILS_ENV"] = 'test'
spec_helper.rbの先頭でENVを出してみるとわかりますが、"development"が入っていますね。
初期化順が変わったのでしょうか・・・
追記
issue上がってました