小编典典

Rails.env 与 RAILS_ENV

all

在检查正在运行的环境时,我在示例中都看到了这两种情况。首选什么?它们在所有意图和目的上是否平等?


阅读 73

收藏
2022-06-10

共1个答案

小编典典

根据文档#Rails.env包装RAILS_ENV

    # File vendor/rails/railties/lib/initializer.rb, line 55
     def env
       @_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV)
     end

但是,具体看 一下 它是如何包装的,使用ActiveSupport::StringInquirer

在此类中包装字符串为您提供了一种更漂亮的方法来测试相等性。Rails.env 返回的值被包裹在一个 StringInquirer
对象中,所以不要调用它:

Rails.env == "production"

你可以这样称呼:

Rails.env.production?

所以它们并不 完全 等价,但它们相当接近。我还没有过多地使用
Rails,但我想说#Rails.env的是,由于使用了StringInquirer.

2022-06-10