2010-11-21 17 views
13

Sto provando a fare riferimento a Rails.root nel mio application.rb ma è nullo, perché è così?Perché il mio Rails.root è zero?

+0

I binari di Rails sono già stati avviati? – Reactormonk

+0

sì, carica bene, ma quando restituisce null, anche nella console di rails. – Blankman

+2

@Blankman: questa è una domanda che potresti accettare. –

risposta

1

Si sta utilizzando Rails 3.x? In caso contrario, si dovrebbe usare RAILS_ROOT anziché Rails.root.

+1

Anche 'RAILS_ROOT' è' nil' in 'application.rb' –

0

Ho avuto lo stesso problema quando ho provato a usarlo prima della dichiarazione del modulo e della classe. Prova a utilizzarlo all'interno e vedi se questo fa la differenza, ad es.

module MyApp 
    class Application < Rails::Application 

    puts Rails.root 

    end 
end 
8

Posso spiegare perché, ma non posso darti una soluzione.

Rails.root è definita rails/railties/lib/rails.rb

def root 
    application && application.config.root 
end 

In application.rb, non è ancora creata l'istanza di application, perché la classe Application viene definita ... L'applicazione viene inizializzata solo dopo, in environment.rb:

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

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

EDIT

La soluzione è sotto i nostri occhi:

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