2010-11-21 192 views
13

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

+0

Rails是否已经启动? – Reactormonk 2010-11-21 23:26:41

+0

是的,它加载得很好,但是当它返回null时,即使在rails控制台中。 – Blankman 2010-11-21 23:27:40

+2

@Blankman:这是一个你可以接受的问题。 – 2011-09-01 06:13:40

回答

1

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

+1

即使'application.rb'中的'RAILS_ROOT'也是'nil' – 2012-03-27 20:01:13

0

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

module MyApp 
    class Application < Rails::Application 

    puts Rails.root 

    end 
end 
8

我可以解释为什么,但我不能给你一个解决方法。

Rails.rootrails/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__)