Respuestas:
Según los documentos , se #Rails.envenvuelve RAILS_ENV:
# File vendor/rails/railties/lib/initializer.rb, line 55
def env
@_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV)
end
Pero, mire específicamente cómo está envuelto, usando ActiveSupport::StringInquirer:
Ajustar una cadena en esta clase le brinda una forma más bonita de probar la igualdad. El valor devuelto por Rails.env está envuelto en un objeto StringInquirer, por lo que en lugar de llamar a esto:
Rails.env == "production"puedes llamar a esto:
Rails.env.production?
Por lo tanto, no son exactamente equivalentes, pero están bastante cerca. Todavía no he usado mucho Rails, pero diría que #Rails.enves sin duda la opción más atractiva visualmente debido al uso StringInquirer.
Rails.enves el nuevo estándar, ya que RAILS_ENVestá en desuso.
ENV['RAILS_ENV']ahora está en desuso .
Deberías usar el Rails.envque claramente es mucho mejor.
Antes de Rails 2.x, la forma preferida de obtener el entorno actual era usar la RAILS_ENVconstante. Del mismo modo, puede usar RAILS_DEFAULT_LOGGERpara obtener el registrador actual o RAILS_ROOTpara obtener la ruta a la carpeta raíz.
A partir de Rails 2.x, Rails introdujo el Railsmódulo con algunos métodos especiales:
Esto no es solo un cambio cosmético. El módulo Rails ofrece capacidades que no están disponibles utilizando las constantes estándar, como el StringInquirersoporte. También hay algunas pequeñas diferencias. Rails.rootno devuelve un simple Stringpero unPath instancia.
De todos modos, la forma preferida es usar el Railsmódulo. Las constantes están en desuso en Rails 3 y se eliminarán en una versión futura, tal vez Rails 3.1.
Rails.envFunciona sin problemas.
Actualización: en Rails 3.0.9: método env definido en railties / lib / rails.rb