17 votes

Pourquoi mon Rails.Root est-il nul ?

J'essaie de référencer Rails.Root dans mon application.rb mais il est nul, pourquoi ?

11voto

Thomas Guillory Points 2701

Je peux expliquer pourquoi, mais je ne peux pas vous donner une solution de rechange.

Rails.root est défini dans rails/railties/lib/rails.rb

def root
  application && application.config.root
end

Sur application.rb l'instance de application n'est pas encore créé, parce que le Application est en cours de définition... L'application n'est initialisée qu'après, dans environment.rb :

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

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

EDIT

La solution de rechange est sous nos yeux :

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

1voto

Lucas Willett Points 331

Utilisez-vous Rails 3.x ? Si non, vous devriez utiliser RAILS_ROOT plutôt que Rails.root .

0voto

Wes Nolte Points 463

J'ai eu le même problème lorsque j'ai essayé de l'utiliser avant la déclaration du module et de la classe. Essayez de l'utiliser à l'intérieur et voyez si cela fait une différence, par ex.

module MyApp
  class Application < Rails::Application

    puts Rails.root

  end
end

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X