Answers:
根据文档,#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
。
Rails.env
是,该标准RAILS_ENV
已被弃用。
在Rails 2.x之前,获取当前环境的首选方法是使用RAILS_ENV
常量。同样,您可以RAILS_DEFAULT_LOGGER
用来获取当前记录器或RAILS_ROOT
获取根文件夹的路径。
从Rails 2.x开始,Rails Rails
通过一些特殊方法引入了该模块:
这不仅仅是表面上的改变。Rails模块提供了使用诸如StringInquirer
支持之类的标准常量无法提供的功能。也有一些细微的差异。Rails.root
不会返回简单String
的Path
实例。
无论如何,首选方式是使用Rails
模块。在Rails 3中不推荐使用常量,并且在将来的版本(可能是Rails 3.1)中将删除常量。
Rails.env
可以正常工作。