Зарегистрируйте свое приложение SQL в Rails внутри модульного теста - PullRequest
1 голос
/ 11 июня 2010

Я хочу установить регистратор, чтобы я мог сбросить весь выполненный SQL моего приложения rails.Проблема в том, что такой регистратор связан с AbstractAdapter, который очень скоро инициализируется в тестовом режиме, и поэтому не может быть установлен моим кодом инициализатора.Я пытаюсь поставить

ActiveRecord::Base.logger = MyCustomLogger.new(STDOUT) 

в конце environment.rb, как кто-то посоветовал, но он работает только при запуске в консольной среде (пинается script/console), а не при запуске в тестовом режиме.Интересно, есть ли способ настроить такой регистратор, чтобы я мог быть вызван в любой среде (тестирование, разработка, производство, консоль)

Ответы [ 3 ]

2 голосов
/ 11 июня 2010

Создание регистратора в config/environment.rb должно работать.Я получаю логирование SQL на стандартный вывод при запуске модульных тестов, если я помещаю следующую строку в config/environment.rb или config/environments/test.rb:

ActiveRecord::Base.logger = Logger.new(STDOUT)

Делает ли ваш класс MyCustomLogger что-то особенное, что вызываетпотерпеть неудачу во время испытаний?Работает ли лучше, если вы используете Logger.new(STDOUT) вместо?

0 голосов
/ 14 июня 2010

Лучший способ, насколько я могу найти, - поместить такой код в папку инициализаторов. Таким образом, независимо от рабочей среды, регистратор всегда установлен правильно. И нет, на моем Mac OSX Rails 2.3.2 на ruby ​​1.8.7, если я помещаю ActiveRecord::Base.logger=... в environment.rb, тогда регистратор не установлен должным образом, так как регистратор, который Sql Connection использовал для дампа SQL, был установлен и кэширован до этого.

0 голосов
/ 11 июня 2010

В test / test_helper.rb перед загрузкой config / environment.rb добавьте:

RAILS_DEFAULT_LOGGER = MyCustomLogger.new(STDOUT)

Соответствующий код в railties для 2.3 railties / lib / initializer.rb # L35 ,Пока не уверен, как это сделать с Rails 3.0.Похоже, вам нужно вызвать Rails # logger =, но я пока не могу найти для этого подходящее место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...