RACK_ENV和RAILS_ENV有什么不同?

时间:2014-08-26 04:41:41

标签: ruby-on-rails

我想了解我的rails应用程序的当前环境。 但我不知道RACK_ENV和RAILS_ENV有什么不同? 谁能帮帮我?

为什么有时RACK_ENV为空,但RAILS_ENV有值?

3 个答案:

答案 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'