Respostas:
De acordo com os documentos , os #Rails.env
embrulhos 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_ENV
está sendo descontinuado.
ENV['RAILS_ENV']
agora está obsoleto .
Você deve usar o Rails.env
que é claramente muito melhor.
Antes do Rails 2.x, a maneira preferida de obter o ambiente atual era usar a RAILS_ENV
constante. Da mesma forma, você pode usar RAILS_DEFAULT_LOGGER
para obter o criador de logs atual ou RAILS_ROOT
o caminho para a pasta raiz.
A partir do Rails 2.x, o Rails apresentou o Rails
mó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 StringInquirer
suporte. Existem também algumas pequenas diferenças. Rails.root
não retorna um String
buth simples por Path
instância.
De qualquer forma, a maneira preferida é usar o Rails
módulo. As constantes foram descontinuadas no Rails 3 e serão removidas em uma versão futura, talvez o Rails 3.1.
Rails.env
funciona sem problemas.
Atualização: no Rails 3.0.9: método env definido em railties / lib / rails.rb