Respostas:
De acordo com os documentos , os #Rails.envembrulhos RAILS_ENV:
# File vendor/rails/railties/lib/initializer.rb, line 55
def env
@_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV)
end
Porém, observe especificamente como ele está envolvido, usando ActiveSupport::StringInquirer:
O agrupamento de uma sequência nesta classe fornece uma maneira mais bonita de testar a igualdade. O valor retornado pelo Rails.env é agrupado em um objeto StringInquirer, portanto, em vez de chamar isso:
Rails.env == "production"você pode chamar isso:
Rails.env.production?
Portanto, eles não são exatamente equivalentes, mas são bastante próximos. Ainda não usei muito o Rails, mas eu diria que #Rails.envé certamente a opção mais atraente visualmente devido ao uso StringInquirer.
Rails.envé o novo padrão que RAILS_ENVestá sendo descontinuado.
ENV['RAILS_ENV']agora está obsoleto .
Você deve usar o Rails.envque é claramente muito melhor.
Antes do Rails 2.x, a maneira preferida de obter o ambiente atual era usar a RAILS_ENVconstante. Da mesma forma, você pode usar RAILS_DEFAULT_LOGGERpara obter o criador de logs atual ou RAILS_ROOTo caminho para a pasta raiz.
A partir do Rails 2.x, o Rails apresentou o Railsmódulo com alguns métodos especiais:
Esta não é apenas uma mudança cosmética. O módulo Rails oferece recursos não disponíveis usando as constantes padrão, como StringInquirersuporte. Existem também algumas pequenas diferenças. Rails.rootnão retorna um Stringbuth simples por Pathinstância.
De qualquer forma, a maneira preferida é usar o Railsmódulo. As constantes foram descontinuadas no Rails 3 e serão removidas em uma versão futura, talvez o Rails 3.1.
Rails.envfunciona sem problemas.
Atualização: no Rails 3.0.9: método env definido em railties / lib / rails.rb