Принудительно загружать application_controller при каждом запуске с помощью Spork

#ruby-on-rails #rspec #spork

#ruby-on-rails #rspec #spork

Вопрос:

Я использую Spork для ускорения моих тестов RSpec. К сожалению, мой application_controller.rb не перезагружается при каждом запуске, так что мне приходится перезапускать Spork при его изменении. Есть ли способ принудительно перезагружать при каждом тестовом запуске? Я думаю, мне нужна какая-то дополнительная строка в Spork.each_run .

Ответ №1:

Попробуйте поместить ActiveSupport::Dependencies.clear в блок Spork.each_run. Затем я бы удалил это, когда вы закончите автоматическое тестирование application_controller.rb, хотя новая задержка не должна быть слишком большой.

Ответ №2:

У меня была такая же проблема, но Spork предназначен для автоматической перезагрузки application_controller.rb без изменений. Итак, я углубился в это и, как упомянуто в комментарии к этому сообщению в блоге, запустил spork --diagnose . В нем перечислены все файлы, первоначально загруженные spork, и обратная трассировка того, как был загружен каждый файл. Это показало мне, что в моем приложении у меня случайно был инициализатор, который ссылался на подкласс ApplicationController и, таким образом, он загружался изначально. Как только я разорвал эту зависимость, мой application_controller.rb начал корректно перезагружаться при каждом тестовом запуске при использовании Spork.