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

时间:2014-04-01 03:42:22

标签: ruby-on-rails

即。当我在测试模式下运行应用程序(使用rails服务器)或者某些其他配置时,它在开发模式下运行(没有资产编译或缓存等),但当我将其部署到服务器时,它以生产模式运行。

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

1 个答案:

答案 0 :(得分:9)

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

  1. 通过调用RAILS_ENV
  2. 获取ENV["RAILS_ENV"]环境变量的值
  3. 如果上述内容为零,则获取ENV["RACK_ENV"]
  4. 如果以上为零,则将其等于"development"
  5. 通过查看Rails.env方法的定义,您可以在Rails源代码中看到该行为:

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

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

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