用Rails.root替换RAILS_ROOT

gio*_*gio 10 ruby-on-rails

我想用Rails.root替换已弃用的RAILS_ROOT,作为使应用程序准备好升级到Rails 3的过程的一部分.该应用程序当前运行的版本为2.3.14,最初是在1.2中创建的

在我的boot.rb文件的开头是行:

RAILS_ROOT ="#{File.dirname(FILE)}/.."除非定义?(RAILS_ROOT)

我不能在这里替换Rails.root,因为Rails是未定义的.

设置Rails.root的推荐方法是什么?

我不认为我提出的问题很清楚.

  • 我知道Rails.root已经存在于Rails 2中.
  • 我可以非常愉快地在我的代码中使用Rails.root.
  • 但我不知道如何在启动时设置Rails.root.我目前似乎被设置在boot.rb顶部的行:

    RAILS_ROOT ="#{File.dirname(FILE)}/.."除非定义?(RAILS_ROOT)

  • 我只能更改该行以使用Rails.root,因为我将得到错误:

    ../config/boot.rb:3:未初始化的常量Rails(NameError)

谢谢乔治

Kas*_*ail 11

你可以像这样使用

 Rails.root.join('lib/ca-bundle.crt')
Run Code Online (Sandbox Code Playgroud)

试试吧


tsh*_*rif 2

它看起来Rails.root确实存在于 Rails 2.3 中:http://apidock.com/rails/v2.3.2/Rails/root/class

在 2.3 中,它只返回RAILS_ROOT,所以除非我弄错了,否则您可以Rails.root在代码中使用而无需其他修改。当您进行升级时,您的boot.rb将被替换,Rails模块也将被替换,因此您的代码应该继续正常工作。

另外,如果您还没有使用它,我和我的同事发现这个插件在从 2.3 升级到 3.0 时非常有用:https: //github.com/rails/rails_upgrade