Certains modules ont des routines de désinstallation. Ce qui supprime généralement les tables de données pour ce module, les variables de la table de variables et les paramètres régionaux introduits par ce module. Ces routines vivent dans le .install
de ce module.
Par conséquent, ils ne peuvent pas être exécutés sans que ce module soit présent. Voici donc nos étapes actuelles. Ma question est: cela peut-il être fait plus simplement et plus efficacement? Dis que je supprime le module foo_bar.
- Dans le RCS, préparez une nouvelle version, où:
- Tous les CSS et les substitutions de thème qui utilisent ou construisent au-dessus de -foo_bar sont supprimés.
- Tous les css et les substitutions de thème pour les modules en fonction de foo_bar sont supprimés.
- Poussez cette version à l'acceptation. Testez la désinstallation (depuis admin / modules) avec une copie très récente de la base de données de production.
- Si tout se passe bien, déployez la nouvelle base de code en production et installez foo_bar et ses dépendances là-bas. Cela invoquera la désinstallation dans les différents modules, nettoyant la base de données.
- Dans le RCS (git), préparez une nouvelle version où le code est réellement supprimé.
- Déployez cela à l'acceptation où nous testons si rien ne dépend accidentellement de cela (certains modules laids ou fonctions de thème incluent des fichiers directement à partir d'autres modules. Notamment CSS, JS ou fichiers image).
- Si elle est acceptée, déployez la nouvelle version en production. la production a maintenant une base de données propre et une base de code propre .
Le problème que je ne vois pas comment résoudre, c'est que cela nécessite toujours deux versions. Étant donné que dans Drupal, une version nécessite que le site soit hors ligne, cela signifie deux fois un temps d'arrêt uniquement pour supprimer un module. Cela nécessite également deux procédures de publication qui, dans les environnements d'hébergement professionnels, peuvent être très coûteuses, longues ou frustrantes.
Si nous supprimons le module de la base de code lors de la première itération, nous ne pouvons pas exécuter les hooks de désinstallation, en conservant de nombreuses peluches dans la base de données; pas seulement quelques tableaux, mais surtout des variables et des locales. Si nous ne supprimons pas le module de la base de code, cela signifie que la base de code augmentera avec du code périmé et inutilisé; cela n'entraîne aucune surcharge de performances, mais rend la maintenance du code de plus en plus difficile.
Comment gérez-vous cela?
[modifier: ajout d'une note sur le déploiement étant une procédure difficile, souvent]