Ответы:
Согласно документации , #Rails.envобертывания RAILS_ENV:
# File vendor/rails/railties/lib/initializer.rb, line 55
def env
@_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV)
end
Но посмотрите конкретно, как это обернуть, используя ActiveSupport::StringInquirer:
Обтекание строки в этом классе дает вам более красивый способ проверки на равенство. Значение, возвращаемое Rails.env, помещается в объект StringInquirer, поэтому вместо вызова этого:
Rails.env == "production"Вы можете назвать это:
Rails.env.production?
Так что они не совсем эквивалентны, но они довольно близки. Я еще не очень много использовал Rails, но я бы сказал, что #Rails.envэто более привлекательный вариант из-за использования StringInquirer.
Rails.envэто новый стандарт, поскольку RAILS_ENVон устарел.
ENV['RAILS_ENV']сейчас устарела .
Вы должны использовать, Rails.envчто явно намного приятнее.
До Rails 2.x предпочтительным способом получения текущей среды было использование RAILS_ENVконстанты. Кроме того, вы можете использовать, RAILS_DEFAULT_LOGGERчтобы получить текущий регистратор или RAILS_ROOTполучить путь к корневой папке.
Начиная с Rails 2.x, Rails представил Railsмодуль с некоторыми специальными методами:
Это не просто косметическое изменение. Модуль Rails предлагает возможности, недоступные при использовании стандартных констант, таких как StringInquirersupport. Есть также некоторые небольшие различия. Rails.rootне возвращает простой StringButh на Pathэкземпляр.
В любом случае, предпочтительным способом является использование Railsмодуля. Константы устарели в Rails 3 и будут удалены в следующем выпуске, возможно, Rails 3.1.
Rails.envработает без проблем.
Обновление: в Rails 3.0.9: метод env определен в railties / lib / rails.rb