回答:
ドキュメントによると、#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
単純なString
buthのPath
インスタンスを返しません。
とにかく、推奨される方法はRails
モジュールを使用することです。定数はRails 3では非推奨であり、将来のリリース、おそらくRails 3.1で削除される予定です。
Rails.env
問題なく動作します。
更新:Rails 3.0.9の場合:railties / lib / rails.rbで定義されたenvメソッド