ENV [' RAILS_ENV']和ENV [' RACK_ENV']是否需要在升级和生产中设置?

时间:2015-06-07 13:53:39

标签: ruby-on-rails ruby-on-rails-4

正在开发中的

ENV['RAILS_ENV']ENV['RACK_ENV']。返回development。在暂存或生产中,它返回nil。我们是否应该为登台和生产环境明确设置这两个环境变量?

Rails是否希望设置此项?

我也注意到以下内容。我有这个初始化器:config/initializers/01_redis.rb

redis_connection = Redis.new(host: URI.parse(ENV['REDIS_SERVER_URL']).host, port: URI.parse(ENV['REDIS_SERVER_URL']).port)
$redis           = Redis::Namespace.new(Rails.env.to_sym, redis: redis_connection)

在暂存时检查此文件。 Rails.env.to_sym被解释为:development。此外,在Rails控制台中运行Rails.env,在暂存中返回staging。在初始化Rails应用程序之前,Rails可能需要ENV['RAILS_ENV']ENV['RACK_ENV']

你有什么想法?

1 个答案:

答案 0 :(得分:1)

Rails需要知道它正在运行的环境。代码的特定部分可以在https://github.com/rails/rails/blob/master/railties/lib/rails.rb#L69

找到
def env
  @_env ||= ActiveSupport::StringInquirer.new(ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development")
end

如果您想在生产模式下工作,是的,您应该设置该环境变量。

但是,有些服务器会为您设置变量。例如,Apache Passenger默认为生产,并且正是如此。

https://www.phusionpassenger.com/library/config/apache/reference/#passengerappenv