Niektóre moduły mają procedury deinstalacji. Które zazwyczaj usuwają tabele bazy danych dla tego modułu, zmienne z tabeli zmiennych i ustawienia narodowe wprowadzone przez ten moduł. Te procedury działają w .install
tym module.
Dlatego nie można ich uruchomić bez obecności tego modułu. Oto nasze aktualne kroki. Moje pytanie brzmi: czy można to zrobić prościej i skuteczniej? Powiedzmy, że usuwam moduł foo_bar.
- W RCS przygotuj nową wersję, w której:
- Wszystkie css i przesłonięcia motywów, które używają lub budują na foo_bar są usuwane.
- Wszystkie css i przesłonięcia motywów dla modułów w zależności od foo_bar są usuwane.
- Przekaż to wydanie do akceptacji. Przetestuj deïnstallation (od administratora / modułów) przy użyciu najnowszej kopii produkcyjnej bazy danych.
- Jeśli wszystko pójdzie dobrze, wdróż nową bazę kodu w środowisku produkcyjnym i usuń tam foo_bar i jego zależności. Spowoduje to wywołanie dezinstalacji w różnych modułach, czyszcząc bazę danych.
- W RCS (git) przygotuj nową wersję, w której kod zostanie faktycznie usunięty.
- Zastosuj to do akceptacji, gdy testujemy, czy nic przypadkowo nie zależało od tego (niektóre brzydkie moduły lub funkcje motywu zawierają pliki bezpośrednio z innych modułów. W szczególności CSS, JS lub pliki obrazów).
- Jeśli zostanie zaakceptowany, wdróż nową wersję do produkcji. produkcja ma teraz czystą bazę danych i czystą bazę kodów .
Problem, którego nie widzę jak rozwiązać, polega na tym, że zawsze wymaga to dwóch wydań. Ponieważ w Drupal wydanie wymaga, aby strona była offline, oznacza to dwa razy przestoje w celu usunięcia jednego modułu. Wymaga także dwóch procedur wydania, które w profesjonalnych środowiskach hostingowych mogą być bardzo drogie, czasochłonne lub frustrujące.
Jeśli usuniemy moduł z bazy kodu w pierwszej iteracji, nie będziemy mogli uruchomić haków deinstalacyjnych, utrzymując wiele kłopotów w bazie danych; nie tylko kilka tabel, ale głównie zmienne i ustawienia regionalne. Jeśli nie usuniemy modułu z bazy kodu, oznacza to, że baza kodu powiększy się o przestarzały, nieużywany kod; nie powoduje to narzutu wydajności, ale utrudnia utrzymanie kodu.
Jak sobie z tym radzisz?
[edytuj: często dodawano uwagę, że wdrożenie jest trudną procedurą]