rails通常如何知道在哪个环境下运行?

aso*_*erg 3 ruby-on-rails

即当我在测试模式下运行的应用程序(使用Rails服务器)或者一些其他的配置,它的运行在开发模式(无资产编译或高速缓存等),但是当我它运行于生产环境部署到服务器.

应用程序如何确定要使用的环境配置?

dep*_*epa 9

Rails通过按优先级顺序检查以下内容,从操作系统的环境变量中读取当前环境:

  1. RAILS_ENV通过调用获取环境变量的值ENV["RAILS_ENV"]
  2. 如果以上是零,那么得到 ENV["RACK_ENV"]
  3. 如果以上是零,则使其等于 "development"

您可以通过查看Rails.env方法的定义在Rails源代码中看到该行为:

def env
  @_env ||= ActiveSupport::StringInquirer.new(ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development")
end
Run Code Online (Sandbox Code Playgroud)

资料来源:https://github.com/rails/rails/blob/4-0-stable/railties/lib/rails.rb#L55-L57

这是您在编写Rails.env以查找当前环境时调用的方法.