Я пытаюсь ссылаться на Rails.root в моем приложении .rb, но это нуль, почему это?
Почему мой Rails.root nil?
Ответ 1
Я могу объяснить, почему, но я не могу дать вам обходной путь.
Rails.root
определяется в rails/railties/lib/rails.rb
def root
application && application.config.root
end
В application.rb
экземпляр application
еще не создан, потому что определяется класс application
... Приложение инициализируется после, в environment.rb
:
# Load the rails application
require File.expand_path('../application', __FILE__)
# Initialize the rails application
Testapp::Application.initialize!
ИЗМЕНИТЬ
Обходной путь прямо на наших глазах:
my_rails_root = File.expand_path('../..', __FILE__)
Ответ 2
Используете ли вы Rails 3.x? Если нет, вы должны использовать RAILS_ROOT
, а не Rails.root
.
Ответ 3
У меня была такая же проблема, когда я пытался использовать ее перед объявлением модуля и класса. Попробуйте использовать его внутри и посмотрите, имеет ли это значение, например.
module MyApp
class Application < Rails::Application
puts Rails.root
end
end