2010-11-21 12 views
13

Estoy tratando de hacer referencia a Rails.root en mi application.rb pero es nulo, ¿por qué es eso?¿Por qué mi Rails.root es nulo?

+0

¿Ya arrancó Rails? – Reactormonk

+0

sí, se carga bien, pero cuando devuelve nulo, incluso en la consola de rieles. – Blankman

+2

@Blankman: esta es una pregunta que usted podría aceptar. –

Respuesta

1

¿Está utilizando Rails 3.x? De lo contrario, debe usar RAILS_ROOT en lugar de Rails.root.

+1

Incluso 'RAILS_ROOT' es' nil' en 'application.rb' –

0

Tuve el mismo problema cuando traté de usarlo antes del módulo y la declaración de clase. Intente usarlo adentro y vea si eso hace la diferencia, p.

module MyApp 
    class Application < Rails::Application 

    puts Rails.root 

    end 
end 
8

Puedo explicar por qué, pero no puedo darle una solución.

Rails.root se define en rails/railties/lib/rails.rb

def root 
    application && application.config.root 
end 

En application.rb, la instancia de application aún no se ha creado, porque se está definiendo la clase Application ... La aplicación sólo se inicializa después, en environment.rb:

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

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

EDITAR

La solución está ante nuestros ojos:

my_rails_root = File.expand_path('../..', __FILE__) 
Cuestiones relacionadas