Réponses:
Selon les documents , #Rails.envencapsule RAILS_ENV:
# File vendor/rails/railties/lib/initializer.rb, line 55
def env
@_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV)
end
Mais regardez spécifiquement comment il est emballé, en utilisant ActiveSupport::StringInquirer:
Envelopper une chaîne dans cette classe vous offre un moyen plus joli de tester l'égalité. La valeur retournée par Rails.env est encapsulée dans un objet StringInquirer donc au lieu d'appeler ceci:
Rails.env == "production"vous pouvez appeler cela:
Rails.env.production?
Ils ne sont donc pas exactement équivalents, mais ils sont assez proches. Je n'ai pas encore beaucoup utilisé Rails, mais je dirais que #Rails.envc'est certainement l'option la plus attrayante visuellement en raison de l'utilisation StringInquirer.
Rails.envs'agit de la nouvelle norme, car elle RAILS_ENVest obsolète.
ENV['RAILS_ENV']est désormais obsolète .
Vous devriez utiliser Rails.envce qui est clairement beaucoup plus agréable.
Avant Rails 2.x, la méthode préférée pour obtenir l'environnement actuel était d'utiliser la RAILS_ENVconstante. De même, vous pouvez utiliser RAILS_DEFAULT_LOGGERpour obtenir l'enregistreur actuel ou RAILS_ROOTpour obtenir le chemin d'accès au dossier racine.
À partir de Rails 2.x, Rails a introduit le Railsmodule avec quelques méthodes spéciales:
Ce n'est pas seulement un changement cosmétique. Le module Rails offre des fonctionnalités non disponibles à l'aide des constantes standard telles que le StringInquirersupport. Il existe également de légères différences. Rails.rootne renvoie pas un simple Stringbuth une Pathinstance.
Quoi qu'il en soit, la meilleure façon d'utiliser le Railsmodule. Les constantes sont obsolètes dans Rails 3 et seront supprimées dans une future version, peut-être Rails 3.1.
Rails.envfonctionne sans problème.
Mise à jour: dans Rails 3.0.9: méthode env définie dans railties / lib / rails.rb