Les seeders, migrations et commandes d’installation s’exécutent à chaque livraison. Ils doivent être idempotents : une deuxième exécution ne doit rien casser. Souvent, c’est précisément ce qu’indique un commentaire au-dessus du code — et souvent, c’est faux.
Le cas
Dans un projet, un commentaire au-dessus d’un seeder affirmait qu’une nouvelle exécution ne changeait rien. En réalité, il réinitialisait tous les réglages à chaque déploiement. Ce qui avait été modifié dans l’administration disparaissait à la livraison suivante.
La règle
Une promesse comme « idempotent » ou « ne peut pas arriver » est une demande de test. Le test est court : exécuter une fois, modifier quelque chose, exécuter une deuxième fois et vérifier que la modification reste.
Comment Basalto procède
Les contenus de départ d’un thème Basalto sont importés avec des clés fixes. Une deuxième exécution ne crée rien en double, et le rafraîchissement ne renouvelle que les entrées que personne n’a modifiées depuis l’import. Les deux sont testés — avec précisément cette deuxième exécution.