11

我想用 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)

谢谢乔治

4

2 回答 2

12

你可以这样使用

 Rails.root.join('lib/ca-bundle.crt')

试试看

于 2012-04-19T12:44:02.790 回答
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

于 2012-04-19T12:39:31.280 回答