บางโมดูลมีการยกเลิกการติดตั้ง ซึ่งโดยทั่วไปแล้วจะลบฐานข้อมูลสำหรับโมดูลนั้นตัวแปรจากตารางตัวแปรและตำแหน่งที่แนะนำโดยโมดูลนั้น รูทีนเหล่านี้อาศัยอยู่ใน.install
โมดูลนั้น
ดังนั้นจึงไม่สามารถรันได้หากไม่มีโมดูลนั้นอยู่ ดังนั้นนี่คือขั้นตอนปัจจุบันของเรา คำถามของฉันคือ: สิ่งนี้สามารถทำได้ง่ายขึ้นและมีประสิทธิภาพมากขึ้น? บอกว่าฉันลบโมดูล foo_bar
- ใน RCS ให้เตรียมรีลีสใหม่โดยที่:
- css และการแทนที่ธีมทั้งหมดที่ใช้หรือสร้างที่ด้านบนของ foo_bar จะถูกลบออก
- css และ theme-overrides สำหรับโมดูลขึ้นอยู่กับ foo_bar จะถูกลบออก
- ผลักดันการเปิดตัวที่จะยอมรับ ทดสอบการยกเลิกการติดตั้ง (จากผู้ดูแลระบบ / โมดูล) ด้วยสำเนาล่าสุดของฐานข้อมูลการผลิต
- หากทุกอย่างไปได้ด้วยดีให้ปรับใช้ codebase ใหม่เพื่อการผลิตและยกเลิกการติดตั้ง foo_bar และการพึ่งพาที่นั่น สิ่งนี้จะเรียกใช้การถอนการติดตั้งในโมดูลต่าง ๆ ทำความสะอาดฐานข้อมูล
- ใน RCS (git) ให้เตรียมรีลีสใหม่ที่มีการลบรหัสจริง
- ปรับใช้เพื่อยอมรับว่าเราทดสอบว่าไม่มีสิ่งใดขึ้นอยู่กับสิ่งนี้โดยบังเอิญ (โมดูลที่น่าเกลียดหรือฟังก์ชั่นชุดรูปแบบรวมถึงไฟล์โดยตรงจากโมดูลอื่น ๆ CSS, JS หรือไฟล์ภาพที่สะดุดตาที่สุด)
- หากยอมรับให้ปรับใช้รีลีสใหม่กับการผลิต การผลิตในขณะนี้มีฐานข้อมูลที่สะอาดและ codebase
ปัญหาที่ฉันไม่สามารถมองเห็นวิธีการแก้ปัญหาคือมันต้องมีสองรุ่น เนื่องจากใน Drupal การวางจำหน่ายต้องการให้เว็บไซต์ออฟไลน์นี่หมายถึงการหยุดทำงานสองครั้งเพียงเพื่อลบหนึ่งโมดูล นอกจากนี้ยังต้องใช้สองขั้นตอนการเปิดตัวซึ่งในสภาพแวดล้อมการโฮสต์มืออาชีพอาจมีราคาแพงมากใช้เวลานานหรือน่าผิดหวัง
หากเราลบโมดูลออกจาก codebase ในการวนซ้ำครั้งแรกเราจะไม่สามารถเรียกใช้ hooks การถอนการติดตั้งโดยเก็บขุยไว้ในฐานข้อมูลจำนวนมาก ไม่ใช่แค่เพียงไม่กี่ตาราง แต่ส่วนใหญ่เป็นตัวแปรและตำแหน่งที่ตั้ง หากเราไม่ลบโมดูลออกจาก codebase นั่นหมายความว่า codebase จะเติบโตไปพร้อมกับโค้ดเก่าที่ไม่ได้ใช้ สิ่งนี้ไม่มีค่าใช้จ่ายประสิทธิภาพ แต่ทำให้การบำรุงรักษารหัสยากขึ้นและหนักขึ้น
คุณจัดการกับสิ่งนี้ได้อย่างไร
[แก้ไข: เพิ่มหมายเหตุเกี่ยวกับการปรับใช้เป็นขั้นตอนที่ยากลำบาก]