2010-11-21 2 views
13

私はapplication.rbでRails.rootを参照しようとしていますが、それは何故ですか?Rails.rootがnilであるのはなぜですか?

+0

レールは既に起動していますか? – Reactormonk

+0

はい、それはうまくロードされますが、それがnullを返すときは、レールコンソールでさえも。 – Blankman

+2

@Blankman:これはあなたが受け入れることができる質問です。 –

答えて

1

Rails 3.xを使用していますか?そうでない場合はRails.rootではなくRAILS_ROOTを使用する必要があります。

+1

'RAILS_ROOT'でも' application.rb'では 'nil'です –

0

私はモジュールとクラス宣言の前にそれを使用しようとしたとき、私は同じ問題を持っていました。それを内部で使ってみて、違いがあるかどうかを確認してください。

module MyApp 
    class Application < Rails::Application 

    puts Rails.root 

    end 
end 
8

私は理由を説明できますが、回避策を教えていただけません。

Rails.rootenvironment.rbApplicationクラスが定義されているので...アプリケーションは唯一、後に初期化され、application.rbでは、applicationのインスタンスがまだ作成されていないrails/railties/lib/rails.rb

def root 
    application && application.config.root 
end 

に定義されています

# Load the rails application 
require File.expand_path('../application', __FILE__) 

# Initialize the rails application 
Testapp::Application.initialize! 

EDIT

回避策は私たちの目の前にあります。

my_rails_root = File.expand_path('../..', __FILE__) 
関連する問題