Beberapa modul memiliki rutinitas instalasi. Yang biasanya menghapus tabel data untuk modul itu, variabel dari tabel variabel dan lokal yang diperkenalkan oleh modul itu. Rutinitas ini hidup dalam .install
modul itu.
Oleh karena itu, mereka tidak dapat dijalankan tanpa modul itu ada. Jadi, inilah langkah kita saat ini. Pertanyaan saya adalah: dapatkah ini dilakukan dengan lebih sederhana dan lebih efektif? Katakanlah saya menghapus modul foo_bar.
- Di RCS, siapkan rilis baru, di mana:
- Semua css dan theme-override yang menggunakan atau membangun di atas of foo_bar dihapus.
- Semua css dan theme-override untuk modul tergantung pada foo_bar dihapus.
- Dorong rilis itu ke penerimaan. Uji deinstalasi (dari admin / modul) dengan salinan terbaru dari basis data produksi.
- Jika semuanya berjalan dengan baik, gunakan basis kode baru untuk produksi, dan deïnstall foo_bar dan dependensinya di sana. Ini akan memanggil uninstall di berbagai modul, membersihkan database.
- Di RCS (git), siapkan rilis baru di mana kode sebenarnya dihapus.
- Sebarkan itu ke penerimaan tempat kami menguji jika tidak ada yang secara tidak sengaja bergantung pada ini (beberapa modul jelek atau fungsi tema menyertakan file langsung dari modul lain. Terutama CSS, JS atau file gambar).
- Jika diterima, gunakan rilis baru untuk produksi. produksi sekarang memiliki basis data yang bersih dan basis kode yang bersih .
Masalah yang tidak bisa saya pecahkan, apakah ini selalu membutuhkan dua rilis. Karena dalam Drupal, rilis mengharuskan situs offline, ini berarti dua kali downtime hanya untuk menghapus satu modul. Ini juga memerlukan dua prosedur rilis, yang, dalam lingkungan hosting profesional bisa sangat mahal, memakan waktu atau membuat frustrasi.
Jika kita menghapus modul dari basis kode di iterasi pertama, kita tidak bisa menjalankan kait instalan, menyimpan banyak serat dalam basis data; bukan hanya beberapa tabel, tetapi kebanyakan variabel dan lokal. Jika kita tidak menghapus modul dari basis kode, itu berarti basis kode akan tumbuh dengan basi, kode yang tidak digunakan; ini tidak memberikan kinerja overhead, tetapi membuat pemeliharaan kode semakin sulit.
Bagaimana Anda menangani ini?
[sunting: catatan tambahan tentang penyebaran menjadi prosedur yang sulit, sering kali]