为什么我的Rails.root为零?

我试图在我的application.rb中引用Rails.root,但它是零,为什么呢?

我可以解释原因,但我不能给你一个解决方法。

Rails.root在rails / railties / lib / rails.rb中定义

 def root application && application.config.root end 

application.rb ,尚未创建application实例,因为正在定义Application类…仅在environment.rb之后初始化应用程序:

 # Load the rails application require File.expand_path('../application', __FILE__) # Initialize the rails application Testapp::Application.initialize! 

编辑

解决方法就在我们眼前:

 my_rails_root = File.expand_path('../..', __FILE__) 

你在使用Rails 3.x吗? 如果没有,您应该使用RAILS_ROOT而不是Rails.root

当我在模块和类声明之前尝试使用它时,我遇到了同样的问题。 尝试在里面使用它,看看是否有所作为,例如

 module MyApp class Application < Rails::Application puts Rails.root end end