Một số mô-đun có thói quen khử kết tinh. Mà thường loại bỏ cơ sở dữ liệu cho mô-đun đó, các biến từ bảng biến và các vị trí được mô-đun đó giới thiệu. Những thói quen này sống trong .install
mô-đun đó.
Do đó, chúng không thể được chạy nếu không có mô-đun đó. Vì vậy, đây là các bước hiện tại của chúng tôi. Câu hỏi của tôi là: điều này có thể được thực hiện đơn giản và hiệu quả hơn? Nói rằng tôi loại bỏ mô-đun foo_bar.
- Trong RCS, chuẩn bị một bản phát hành mới, trong đó:
- Tất cả các ghi đè css và chủ đề sử dụng hoặc xây dựng trên đầu trang của foo_bar đều bị xóa.
- Tất cả các ghi đè css và chủ đề cho các mô-đun tùy thuộc vào foo_bar đều bị xóa.
- Đẩy bản phát hành đó đến sự chấp nhận. Kiểm tra sự kết tinh (từ quản trị viên / mô-đun) với một bản sao rất gần đây của cơ sở dữ liệu sản xuất.
- Nếu mọi việc suôn sẻ, hãy triển khai cơ sở mã mới vào sản xuất và hủy bỏ foo_bar và các phụ thuộc của nó ở đó. Điều này sẽ gọi gỡ cài đặt trong các mô-đun khác nhau, làm sạch cơ sở dữ liệu.
- Trong RCS (git), chuẩn bị một bản phát hành mới trong đó mã thực sự bị xóa.
- Triển khai để chấp nhận nơi chúng tôi kiểm tra nếu không có gì vô tình phụ thuộc vào điều này (một số mô-đun hoặc chức năng chủ đề xấu bao gồm các tệp trực tiếp từ các mô-đun khác. Đáng chú ý nhất là CSS, JS hoặc tệp hình ảnh).
- Nếu được chấp nhận, triển khai phát hành mới vào sản xuất. sản xuất hiện có một cơ sở dữ liệu sạch và một cơ sở mã sạch .
Vấn đề mà tôi không thể thấy cách giải quyết, đó là điều này luôn cần hai bản phát hành. Vì trong Drupal, một bản phát hành yêu cầu trang web phải ngoại tuyến, điều này có nghĩa là hai lần ngừng hoạt động chỉ để xóa một mô-đun. Nó cũng đòi hỏi hai thủ tục phát hành, trong đó, trong môi trường lưu trữ chuyên nghiệp có thể rất tốn kém, tốn thời gian hoặc bực bội.
Nếu chúng ta loại bỏ mô-đun khỏi codebase trong lần lặp đầu tiên, chúng ta không thể chạy các hook gỡ cài đặt, giữ nhiều lint trong cơ sở dữ liệu; không chỉ một vài bảng, mà chủ yếu là các biến và địa phương. Nếu chúng ta không loại bỏ mô-đun khỏi cơ sở mã, điều đó có nghĩa là cơ sở mã sẽ phát triển với mã cũ, không sử dụng; điều này không mang lại hiệu năng cao, nhưng làm cho việc duy trì mã ngày càng khó hơn.
Làm thế nào để bạn đối phó với điều này?
[chỉnh sửa: thêm ghi chú về việc triển khai là một thủ tục khó khăn, thường]