当我检查one在什么环境中运行时,我在示例中看到了这两种情况。首选的是什么?它们在所有的意图和目的上都是平等的吗?
发布于 2010-04-27 00:26:38
According to the docs,#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 ==“生产”
你可以这样叫它:
Rails.env.production?
所以它们不是完全等价的,但它们是相当接近的。我还没怎么用过Rails,但我想说,由于使用了StringInquirer,#Rails.env在视觉上肯定是更吸引人的选择。
发布于 2012-01-05 03:01:45
ENV['RAILS_ENV']现在是不推荐使用的。
你应该使用Rails.env,它显然要好得多。
发布于 2010-04-27 03:08:19
在Rails2.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。
https://stackoverflow.com/questions/2715035
复制相似问题