当检查env one正在运行时,我在例子中看到了这两种情况。喜欢是什么?它们在所有意图和目的上都是平等的吗?
根据文档,#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。环境是包裹在一个 StringInquirer对象,而不是 调用: Rails。Env == "生产" 你可以调用它: Rails.env.production吗?
所以它们并不完全相等,但相当接近。我还没有经常使用Rails,但是我要说#Rails。由于使用StringInquirer, env当然是更有视觉吸引力的选择。
Rails 2之前。因此,获取当前环境的首选方法是使用RAILS_ENV常量。同样,您可以使用RAILS_DEFAULT_LOGGER获取当前记录器,或者使用RAILS_ROOT获取根文件夹的路径。
从Rails 2开始。x, Rails用一些特殊的方法引入了Rails模块:
Rails.root Rails.env Rails.logger
这不仅仅是表面上的改变。Rails模块提供了使用标准常量(如StringInquirer支持)所不具备的功能。 也有一些细微的区别。Rails。root返回的不是一个简单的字符串,而是一个路径实例。
无论如何,首选的方法是使用Rails模块。常量在Rails 3中已弃用,并将在未来的版本(也许是Rails 3.1)中被移除。
在调试我的应用程序时奇怪的行为: 需要“active_support /通知” (rdb:1) p ENV['RAILS_ENV'] “测试” (rdb:1) p Rails.env “发展”
我会说你应该坚持使用其中一个(最好是Rails.env)
推荐文章
- Rails。env vs RAILS_ENV
- 如何从Ruby数组中创建平均值?
- 我能在视图中得到当前控制器的名称吗?
- Paperclip::Errors::MissingRequiredValidatorError with Rails
- 如何表达一个NOT IN查询与ActiveRecord/Rails?
- Ruby on Rails form_for选择字段与类
- 在Rails 4中自动加载库文件
- 在ROR迁移期间,将列类型从Date更改为DateTime
- 有没有一种方法可以获得Rails应用程序中所有模型的集合?
- ActiveRecord:大小vs计数
- 我怎么才能跳出露比·普利的怪圈?
- 向link_to添加查询字符串参数
- Rails模型中不区分大小写的搜索
- Rails:在大数字中添加逗号有Rails技巧吗?
- 使用rvmrc或ruby版本文件设置RVM项目gemset ?