我想了解我的rails应用程序的当前环境。 但我不知道RACK_ENV和RAILS_ENV有什么不同? 谁能帮帮我?
为什么有时RACK_ENV为空,但RAILS_ENV有值?
答案 0 :(得分:22)
您可以使用RACK_ENV以及RAILS_ENV,除非RAILS_ENV优先于RACK_ENV。
rails/rails.rb at b0b4b176b0e061a4f03ddce669637b7d6c37aa33 · rails/rails
答案 1 :(得分:11)
Rails应用程序使用RAILS_ENV
。其他基于机架的应用程序使用RACK_ENV
。如果您有Rails应用程序,请忽略RACK_ENV
。
编辑:另一个答案更正确。
答案 2 :(得分:0)
def set_environment
ENV["RAILS_ENV"] ||= options[:environment]
end
ENV [“ RAILS_ENV”]来自选项
def options
merged_options = @use_default_options ? default_options.merge(@options) : @options
merged_options.reject { |k, v| @ignore_options.include?(k) }
end
如果是默认的Rails服务器,则环境来自默认选项
def default_options
environment = ENV['RACK_ENV'] || 'development'
default_host = environment == 'development' ? 'localhost' : '0.0.0.0'
{
:environment => environment,
:pid => nil,
:Port => 9292,
:Host => default_host,
:AccessLog => [],
:config => "config.ru"
}
end
因此,ENV ['RACK_ENV']具有默认值'development'