일부 모듈에는 분리 루틴이 있습니다. 일반적으로 해당 모듈의 데이터베이스 테이블, 변수 테이블의 변수 및 해당 모듈에서 소개 된 로케일을 제거합니다. 이 루틴 .install
은 해당 모듈에 있습니다.
따라서 해당 모듈이 없으면 실행할 수 없습니다. 현재 단계는 다음과 같습니다. 내 질문은 : 이보다 간단하고 효과적으로 수행 할 수 있습니까? foo_bar 모듈을 제거한다고 가정 해보십시오.
- RCS에서 새 릴리스를 준비하십시오.
- foo_bar 위에서 사용하거나 빌드 한 모든 CSS 및 테마 재정의가 제거됩니다.
- foo_bar에 따라 모듈에 대한 모든 CSS 및 테마 재정의가 제거됩니다.
- 해당 릴리스를 승인으로 푸시하십시오. 최신 프로덕션 데이터베이스 복사본으로 관리 (모듈 / 관리자)에서 deïnstallation을 테스트하십시오.
- 문제가 해결되지 않으면 새로운 코드베이스를 프로덕션 환경에 배포하고 foo_bar 및 해당 종속 항목을 정의하십시오. 이것은 다양한 모듈에서 설치 제거를 호출하여 데이터베이스를 정리합니다.
- RCS (git)에서 코드가 실제로 제거되는 새 릴리스를 준비하십시오.
- 우연히 이것에 의존하지 않는 경우 테스트 할 위치에 수용하십시오 (어떤 추악한 모듈 또는 테마 기능에는 다른 모듈의 파일, 특히 CSS, JS 또는 이미지 파일)이 직접 포함됩니다.
- 수락되면 프로덕션에 새 릴리스를 배포하십시오. 프로덕션에는 이제 깨끗한 데이터베이스와 깨끗한 코드베이스가 있습니다.
해결 방법을 볼 수없는 문제는 항상 두 개의 릴리스가 필요하다는 것입니다. Drupal에서 릴리스를 수행하려면 사이트가 오프라인 상태 여야하므로 모듈 하나만 제거하면 다운 타임이 두 배가됩니다. 또한 전문 호스팅 환경에서는 비용이 많이 들고 시간이 많이 걸리거나 실망 스러울 수있는 두 가지 릴리스 절차가 필요합니다.
첫 번째 반복에서 코드베이스에서 모듈을 제거하면 데이터베이스에 많은 보푸라기를 유지하면서 제거 후크를 실행할 수 없습니다. 몇 개의 테이블뿐만 아니라 대부분 변수와 로케일. 코드베이스에서 모듈을 제거하지 않으면 코드베이스가 오래되고 사용되지 않는 코드로 커집니다. 이렇게하면 성능 오버 헤드가 발생하지 않지만 코드를 유지 관리하기가 더 어렵고 어렵습니다.
이것을 어떻게 처리합니까?
[편집 : 배포가 까다로운 절차라는 참고 사항이 추가됨]