Ruby on rails 什么';RACK_ENV和RAILS_ENV之间有什么不同?

Ruby on rails 什么';RACK_ENV和RAILS_ENV之间有什么不同?,ruby-on-rails,Ruby On Rails,我想了解rails应用程序的当前环境。 但我不知道RACK_ENV和RAILS_ENV有什么不同? 谁能帮我 为什么有时候RACK_ENV是空的,而RAILS_ENV有价值?RAILS应用程序使用RAILS_ENV。其他基于机架的应用程序使用Rack\u ENV。如果您有Rails应用程序,请忽略RACK\u ENV 编辑:另一个答案更正确。您可以使用RACK_ENV和RAILS_ENV,但RAILS_ENV优先于RACK_ENV ENV[“RAILS_ENV”]来自选项 def option

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


为什么有时候RACK_ENV是空的,而RAILS_ENV有价值?

RAILS应用程序使用
RAILS_ENV
。其他基于机架的应用程序使用
Rack\u ENV
。如果您有Rails应用程序,请忽略
RACK\u ENV


编辑:另一个答案更正确。

您可以使用RACK_ENV和RAILS_ENV,但RAILS_ENV优先于RACK_ENV

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”

最后,使用一行代码作为参考,而不只是在主分支中插入指向文件的链接的人。
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