回答:
ドキュメントによると、#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廃止予定の新しい標準であることを言及する価値があります。
Rails 2.xより前は、現在の環境を取得するための推奨される方法はRAILS_ENV定数を使用することでした。同様に、を使用RAILS_DEFAULT_LOGGERして現在のロガーRAILS_ROOTを取得したり、ルートフォルダーへのパスを取得したりできます。
Rails 2.xから、Rails Railsはいくつかの特別なメソッドを備えたモジュールを導入しました:
これは単なる表面的な変更ではありません。Railsモジュールは、StringInquirerサポートなどの標準定数を使用して利用できない機能を提供します。若干の違いもあります。Rails.root単純なStringbuthのPathインスタンスを返しません。
とにかく、推奨される方法はRailsモジュールを使用することです。定数はRails 3では非推奨であり、将来のリリース、おそらくRails 3.1で削除される予定です。
Rails.env問題なく動作します。
更新:Rails 3.0.9の場合:railties / lib / rails.rbで定義されたenvメソッド