В основном у меня есть initializer class
на RAILS_ROOT/config/initialiers/app_constant.rb
, чтобы все было легко контролировать.Рельсы: Запустите инициализатор перед созданием классов
class AppConstant
APIURL = 'http://path.to.api'
end
И в RAILS_ROOT/model/user.rb
, у меня есть настройки:
class User < ActiveResource::Base
self.site = AppConstant::APIURL
end
И при запуске rails s
, я получил следующее сообщение об ошибке
<class:User>: uninitialized constant User::AppConstant::APIURL
Я знаю, что проблема в том, что Rails работать Инициализаторы после создания классов. Есть ли способ сделать некоторые инициализаторы запущенными до того, как Rails настроит его классы?
Наконец эта проблема решается путем добавления require "#{Rails.root}\conf\initializers\app_constant.rb"
к application.rb
, который загружается непосредственно перед моделями Rails нагрузок.
Спасибо за ваш ответ, я пробовал с глобальной областью '::', но это не сработало. Проблема в том, что когда Rails генерирует класс 'User', класс' AppConstant' не инициализируется. Но я не знаю, как сделать класс 'AppConstant' инициализированным до того, как он прочитает класс' User' – jwall
Обновлено мой ответ – DanS
Вы правы, наконец, я должен сделать этот способ, чтобы решить проблему. – jwall