在检查正在运行的环境时,我在示例中都看到了这两种情况。首选什么?它们在所有意图和目的上是否平等?
根据文档,#Rails.env包装RAILS_ENV:
#Rails.env
RAILS_ENV
# File vendor/rails/railties/lib/initializer.rb, line 55 def env @_env ||= ActiveSupport::StringInquirer.new(RAILS_ENV) end
但是,具体看 一下 它是如何包装的,使用ActiveSupport::StringInquirer:
ActiveSupport::StringInquirer
在此类中包装字符串为您提供了一种更漂亮的方法来测试相等性。Rails.env 返回的值被包裹在一个 StringInquirer 对象中,所以不要调用它: Rails.env == "production" 你可以这样称呼: Rails.env.production?
在此类中包装字符串为您提供了一种更漂亮的方法来测试相等性。Rails.env 返回的值被包裹在一个 StringInquirer 对象中,所以不要调用它:
Rails.env == "production"
你可以这样称呼:
Rails.env.production?
所以它们并不 完全 等价,但它们相当接近。我还没有过多地使用 Rails,但我想说#Rails.env的是,由于使用了StringInquirer.
StringInquirer