Alcuni moduli hanno routine di deinstallazione. Che di solito rimuovono i database disponibili per quel modulo, le variabili dalla tabella delle variabili e le localizzazioni introdotte da quel modulo. Queste routine vivono nel .install
di quel modulo.
Pertanto, non possono essere eseguiti senza che quel modulo sia presente. Quindi ecco i nostri passi attuali. La mia domanda è: può essere fatto in modo più semplice ed efficace? Di 'che rimuovo il modulo foo_bar.
- In RCS, preparare una nuova versione, in cui:
- Tutti i CSS e le sostituzioni di temi che usano o si basano su of foo_bar vengono rimossi.
- Tutti i CSS e le sostituzioni di temi per i moduli a seconda di foo_bar vengono rimossi.
- Spingi quel rilascio all'accettazione. Testare la disattivazione (da admin / moduli) con una copia molto recente del database di produzione.
- Se tutto va bene, distribuisci il nuovo codebase alla produzione e deinstall foo_bar e le sue dipendenze lì. Questo invocherà la disinstallazione nei vari moduli, ripulendo il database.
- In RCS (git), preparare una nuova versione in cui il codice viene effettivamente rimosso.
- Distribuiscilo all'accettazione laddove testiamo se nulla dipendesse accidentalmente da questo (alcuni brutti moduli o funzioni tematiche includono file direttamente da altri moduli. In particolare CSS, JS o file immagine).
- Se accettato, distribuire la nuova versione alla produzione. la produzione ora ha un database pulito e una base di codice pulita .
Il problema che non riesco a vedere come risolvere è che ciò richiede sempre due versioni. Poiché in Drupal una versione richiede che il sito sia offline, ciò significa due volte di inattività solo per rimuovere un modulo. Richiede anche due procedure di rilascio che, in ambienti di hosting professionale, possono essere molto costosi, che richiedono tempo o frustranti.
Se rimuoviamo il modulo da codebase nella prima iterazione, non possiamo eseguire i hook di disinstallazione, mantenendo molti lanugine nel database; non solo alcune tabelle, ma principalmente variabili e impostazioni locali. Se non rimuoviamo il modulo da codebase, ciò significa che codebase crescerà con codice non aggiornato e non utilizzato; ciò non comporta alcun sovraccarico di prestazioni, ma rende il mantenimento del codice sempre più difficile.
come lo gestisci?
[modifica: aggiunta nota sul fatto che la distribuzione è una procedura difficile, spesso]