Зарегистрируйте свой SQL в приложении направляющих в модульном тесте

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

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

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

1
задан Phương Nguyễn 11 June 2010 в 11:26
поделиться

3 ответа

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

0
ответ дан 2 September 2019 в 23:49
поделиться

В 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=, но я пока не могу найти подходящее место для этого.

0
ответ дан 2 September 2019 в 23:49
поделиться

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

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

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

2
ответ дан 2 September 2019 в 23:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: