2010-11-21 14 views
13

Rails.root'u application.rb dosyasında denemeye çalışıyorum ama nil, neden bu?Rails.root neden sıfır?

+0

Raylar zaten açıldı mı? – Reactormonk

+0

evet, iyi yükler, ancak null döndüğünde, raylar konsolunda bile. – Blankman

+2

@Blankman: Bu kabul edebileceğiniz bir sorudur. –

cevap

1

Rails 3.x kullanıyor musunuz? Değilse, Rails.root yerine RAILS_ROOT kullanıyor olmalısınız.

+1

'RAILS_ROOT' bile 'application.rb' içinde nil' –

0

Modül ve sınıf bildirimi öncesinde kullanmaya çalıştığımda aynı sorunu yaşadım. İçeride kullanmayı deneyin ve bunun bir fark yaratıp yaratmadığını görün.

module MyApp 
    class Application < Rails::Application 

    puts Rails.root 

    end 
end 
8

Nedenini açıklayabilirim, ancak size bir geçici çözüm bulamıyorum.

Rails.rootenvironment.rb yılında Application sınıf tanımlı ediliyor çünkü ... uygulama yalnızca, sonra başlatılır, application.rb yılında application örneği henüz oluşturulmadı rails/railties/lib/rails.rb

def root 
    application && application.config.root 
end 

tanımlanır:

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

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

DÜZENLEME

Buradaki geçici çözüm gözlerimizin önündedir:

my_rails_root = File.expand_path('../..', __FILE__) 
İlgili konular