Работа над устаревшим приложением Rails

У меня очень старое и плохо написанное приложение Rails. Есть около 9000 строк кода и ноль тестов. Большая часть кода находится в контроллерах, и, что еще хуже, существует множество вызовов внешних API, системных вызовов случайных сценариев и т. Д.

Также нет среды разработки, все настроено для работы с производственными базами данных. Ну, это не одна база данных, существует около 10 различных баз данных, поскольку приложение является своего рода административным сервером для более крупного сайта.

Моя первая идея заключалась в том, чтобы получить хотя бы приличное тестовое покрытие тех частей, над которыми я собираюсь работать, но я не могу заставить это работать где-нибудь еще, кроме как на производственных серверах.

Также есть множество старых гемов и устаревших предупреждений, но я даже не могу думать об обновлении гемов, пока не пройдут тесты. Переписывать все целиком - не вариант, и мне скоро придется что-то добавить / изменить.

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

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

Какие шаги я могу предпринять, чтобы практически скопировать огромную сложную производственную среду на мою машину разработки, чтобы я мог делать что-то изолированно?

править: Маленький забавный факт о приложении. Когда я попытался запустить его в первый раз, он продолжал зависать без каких-либо сообщений об ошибках ... примерно через полчаса я обнаружил, что тайм-аут для подключения к базе данных (которая была недоступна) была установлена ​​на 90 минут !

7
задан Jakub Arnold 22 December 2011 в 21:59
поделиться