首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails.env vs RAILS_ENV

Rails.env vs RAILS_ENV
EN

Stack Overflow用户
提问于 2010-04-27 00:18:49
回答 5查看 167.8K关注 0票数 224

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-04-27 00:26:38

According to the docs#Rails.env包装RAILS_ENV

代码语言:javascript
复制
    # 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在视觉上肯定是更吸引人的选择。

票数 379
EN

Stack Overflow用户

发布于 2012-01-05 03:01:45

ENV['RAILS_ENV']现在是不推荐使用的

你应该使用Rails.env,它显然要好得多。

票数 34
EN

Stack Overflow用户

发布于 2010-04-27 03:08:19

在Rails2.x之前,获取当前环境的首选方法是使用RAILS_ENV常量。同样,您可以使用RAILS_DEFAULT_LOGGER获取当前的记录器,或者使用RAILS_ROOT获取根文件夹的路径。

从Rails 2.x开始,Rails引入了带有一些特殊方法的Rails模块:

  • Rails.root
  • Rails.env
  • Rails.logger

这不仅仅是一个表面上的改变。Rails模块提供了使用标准常量无法提供的功能,例如StringInquirer支持。也有一些细微的区别。Rails.root不会返回简单的String,而会返回Path实例。

无论如何,首选的方法是使用Rails模块。常量在Rails 3中被弃用,并将在未来的版本中删除,可能是Rails 3.1。

票数 29
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2715035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档