2011-02-10 3 views
3

Я использую rails (3.0.4) и rspec-rails (2.5.0). When I run рельсы генерировать RSpec: установить it produces spec_helper.rb`, который содержит следующую строку:Как заменить Rspec ENV ["RAILS_ENV"] || = 'test', устаревший в Rails 3.0?

ENV["RAILS_ENV"] ||= 'test' 

Когда я бегу rake spec я получаю это предупреждение на в терминале:

DEPRECATION WARNING: RAILS_ENV is deprecated. Please use ::Rails.env. 

Это не так раздражает, так как он работает только один раз внутри моего Spork.prefork, но я хотел бы, если это возможно, преодолеть это отклонение. Я новичок в Rails и не нашел упоминания об этом в rspec-rails issues или в другом месте.

ответ

6

Dup моего ответа в GitHub issue:

Это предупреждение говорит вам, что константа RAILS_ENV устарела, а не переменная окружения ENV["RAILS_ENV"]. Если вы клонируете репозиторий Rails и проверите тег v3.0.4 и выполните поиск RAILS_ENV, вы увидите, что Rails сам использует ENV["RAILS_ENV"] в нескольких местах.

Должно происходить из другого места в вашем приложении.

+0

Спасибо! Проблема заключалась в создании нового массива newrelic_rpm. – Turadg

2

Должно быть новым в Rails 3.0.4. Это должно работать:

Удалите ENV["RAILS_ENV"] || = 'test' из спецификации/spec_helper.rb

Посмотрите на require rspec/rails линии.

Добавить ::Rails.env ||= 'test' сразу после этого.

Было бы неплохо открыть проблему для трекера rspec-rails, так как это потребует изменения.

+0

Спасибо за исправление. [Сообщение об ошибке] (https://github.com/rspec/rspec-rails/issues/328). – Turadg

+1

Обновление, что не работает. Rails.env возвращает 'development' в этой точке, поэтому' || = 'ничего не делает. Мне потребовалось некоторое время, чтобы понять, почему мои тесты выполнялись на моей разработке db. :) – Turadg