Antworten:
Laut den Dokumenten , #Rails.env
Wraps RAILS_ENV
:
# File vendor/rails/railties/lib/initializer.rb, line 55
def env
@_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV)
end
Schauen Sie sich jedoch genau an, wie es verpackt ist, indem Sie Folgendes verwenden ActiveSupport::StringInquirer
:
Wenn Sie eine Zeichenfolge in diese Klasse einschließen, können Sie die Gleichheit besser testen. Der von Rails.env zurückgegebene Wert wird in ein StringInquirer-Objekt eingeschlossen, anstatt Folgendes aufzurufen:
Rails.env == "production"
Sie können dies nennen:
Rails.env.production?
Sie sind also nicht genau gleichwertig, aber sie stehen sich ziemlich nahe. Ich habe Rails noch nicht viel benutzt, aber ich würde sagen, dass dies #Rails.env
aufgrund der Verwendung sicherlich die optisch attraktivere Option ist StringInquirer
.
Rails.env
der neue Standard RAILS_ENV
ist, da er veraltet ist.
ENV['RAILS_ENV']
ist jetzt veraltet .
Sie sollten verwenden, Rails.env
was eindeutig viel schöner ist.
Vor Rails 2.x war die Verwendung der RAILS_ENV
Konstante der bevorzugte Weg, um die aktuelle Umgebung abzurufen. Ebenso können Sie RAILS_DEFAULT_LOGGER
den aktuellen Logger oder RAILS_ROOT
den Pfad zum Stammordner abrufen.
Ausgehend von Rails 2.x führte Rails das Rails
Modul mit einigen speziellen Methoden ein:
Dies ist nicht nur eine kosmetische Veränderung. Das Rails-Modul bietet Funktionen, die mit den Standardkonstanten nicht verfügbar sind, z. B. StringInquirer
Unterstützung. Es gibt auch einige geringfügige Unterschiede. Rails.root
gibt kein einfaches String
buth eine Path
Instanz zurück.
Der bevorzugte Weg ist jedoch die Verwendung des Rails
Moduls. Konstanten sind in Rails 3 veraltet und werden in einer zukünftigen Version, möglicherweise Rails 3.1, entfernt.
Rails.env
funktioniert ohne Probleme.
Update: in Rails 3.0.9: env-Methode definiert in railties / lib / rails.rb