簡體   English   中英

RACK_ENV 和 RAILS_ENV 有什么不同?

[英]what's different between RACK_ENV and RAILS_ENV?

我想獲取 Rails 應用程序的當前環境。 但我不知道 RACK_ENV 和 RAILS_ENV 之間有什么不同? 誰能幫我?

為什么有時 RACK_ENV 為空,但 RAILS_ENV 有價值?

您可以使用 RACK_ENV 以及 RAILS_ENV,但 RAILS_ENV 位於 RACK_ENV 之前。

rails/rails.rb 在 b0b4b176b0e061a4f03ddce669637b7d6c37aa33 · rails/rails

Rails 應用程序使用RAILS_ENV 其他基於機架的應用程序使用RACK_ENV 如果您有 Rails 應用程序,請忽略RACK_ENV

編輯:另一個答案更正確。

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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM