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']
。
你有什么想法?
答案 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