Я вижу оба примера, когда проверяю, в какой среде выполняется ENV. Что предпочтительнее? Являются ли они для всех намерений и целей равными?
ruby-on-rails
штифтик
источник
источник
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 предлагает возможности, недоступные при использовании стандартных констант, таких как
StringInquirer
support. Есть также некоторые небольшие различия.Rails.root
не возвращает простойString
Buth наPath
экземпляр.В любом случае, предпочтительным способом является использование
Rails
модуля. Константы устарели в Rails 3 и будут удалены в следующем выпуске, возможно, Rails 3.1.источник
Rails.env
работает без проблем.Странное поведение при отладке моего приложения: требуется "active_support / notifications" (rdb: 1) p ENV ['RAILS_ENV'] "test" (rdb: 1) p Rails.env "development"
Я бы сказал, что вы должны придерживаться того или иного (и желательно Rails.env)
источник
Обновление: в Rails 3.0.9: метод env определен в railties / lib / rails.rb
источник