2010-11-21 16 views
13

Próbuję odwołać się do Rails.root w moim application.rb, ale jest zerowe, dlaczego tak jest?Dlaczego mój Rails.root zero?

+0

Czy Szyny uruchamia się już? – Reactormonk

+0

tak, ładuje się dobrze, ale gdy zwraca zerowy, nawet w konsoli szyn. – Blankman

+2

@Blankman: to jest pytanie, które możesz zaakceptować. –

Odpowiedz

1

Czy używasz Rails 3.x? Jeśli nie, powinieneś używać RAILS_ROOT zamiast Rails.root.

+1

Nawet 'RAILS_ROOT' ma wartość' nil' w 'application.rb' –

0

Miałem ten sam problem, gdy próbowałem go użyć przed deklaracją modułu i klasy. Spróbuj użyć go wewnątrz i sprawdź, czy to ma wpływ na np.

module MyApp 
    class Application < Rails::Application 

    puts Rails.root 

    end 
end 
8

Mogę wyjaśnić, dlaczego, ale nie mogę podać obejścia.

Rails.root jest zdefiniowana w rails/railties/lib/rails.rb

def root 
    application && application.config.root 
end 

W application.rb, wystąpienie application nie jest jeszcze utworzony, ponieważ klasa jest zdefiniowana Application ... Aplikacja jest inicjowany dopiero w environment.rb:

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

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

EDIT

Rozwiązaniem jest tuż przed naszymi oczami:

my_rails_root = File.expand_path('../..', __FILE__) 
Powiązane problemy