Ho un'app Rails molto vecchia e scritta male. Ci sono circa 9000 linee di codice e zero test. La maggior parte del codice si trova nei controller e, peggio ancora, ci sono tonnellate di chiamate API esterne, chiamate di sistema a script casuali, ecc.Utilizzo di un'applicazione legacy Rails
Non c'è nemmeno un ambiente di sviluppo, tutto è impostato per funzionare con i database di produzione. Beh, non solo un database, ci sono circa 10 diversi database, dal momento che l'app è una sorta di backend amministratore per un sito più grande.
La mia prima idea era di ottenere una copertura di test almeno in qualche modo decente sulle parti su cui ho intenzione di lavorare, ma non riesco a far funzionare la cosa in nessun altro posto rispetto ai server di produzione.
Inoltre ci sono tonnellate di vecchie gemme e avvertimenti deprecati, ma non riesco nemmeno a pensare di aggiornare le gemme finché non ci saranno test. Riscrivere il tutto non è un'opzione, e dovrò aggiungere/cambiare cose presto.
Non sono proprio sicuro di come affrontare la verifica di un'applicazione del genere, dal momento che ci sono così tante cose che possono andare storte. Quello che mi piacerebbe davvero fare, è scrivere alcuni test di integrazione e poi avviare il refactoring, ma non posso farlo in un ambiente di produzione.
Test di unità di scrittura con mazzetti e mock non mi sembra utile, dal momento che il codice su cui sto andando a lavorare in pratica deve essere riscritto da zero.
Quali sono alcuni passaggi che è possibile eseguire per duplicare fondamentalmente un ambiente di produzione hugeass complesso sulla mia macchina di sviluppo, quindi posso fare cose in isolamento?
modifica: Un piccolo aspetto divertente dell'app. Quando ho provato ad eseguirlo per la prima volta, continuava a congelarsi senza alcun messaggio di errore ... fino a circa mezz'ora dopo ho scoperto che il timeout per la connessione a un database (che non era disponibile) era impostato su 90 minuti!
Trovare una persona che ha creato questo, prendere in ostaggio la sua famiglia e fargli aiutare (o almeno spiegare come funziona la cosa). –
È possibile scattare un'istantanea della macchina di produzione e dividerla in laboratorio. –