一部のモジュールには、デルーチンルーチンがあります。通常、そのモジュールのデータベーステーブル、変数テーブルからの変数、およびそのモジュールによって導入されたロケールを削除します。これらのルーチンは.install
、そのモジュールに存在します。
したがって、それらのモジュールが存在しないと実行できません。これが現在の手順です。私の質問は、これをより簡単に、より効果的に行うことができますか?foo_barモジュールを削除するとします。
- RCSで、次の新しいリリースを準備します。
- foo_barを使用または構築するすべてのcssおよびテーマオーバーライドは削除されます。
- foo_barに依存するモジュールのすべてのcssおよびテーマオーバーライドは削除されます。
- そのリリースを受け入れてください。運用データベースの最新のコピーを使用して、(admin / modulesからの)分散をテストします。
- すべてうまくいけば、新しいコードベースを本番環境にデプロイし、foo_barとその依存関係をそこに配置します。これにより、さまざまなモジュールでアンインストールが呼び出され、データベースがクリーンアップされます。
- RCS(git)で、コードが実際に削除される新しいリリースを準備します。
- 誤ってこれに依存していないかどうかをテストするために、それを受け入れます(一部のいモジュールまたはテーマ関数には、他のモジュールから直接ファイルが含まれます。特にCSS、JS、または画像ファイル)。
- 受け入れられたら、新しいリリースを実稼働環境にデプロイします。本番環境には、クリーンなデータベースとクリーンなコードベースがあります。
解決方法がわかりませんが、これには常に2つのリリースが必要です。Drupalでは、リリースにはサイトがオフラインである必要があるため、これは1つのモジュールを削除するために2回のダウンタイムを意味します。また、2つのリリース手順が必要です。これは、プロのホスティング環境では、非常に高価で、時間がかかり、イライラする可能性があります。
最初の反復でコードベースからモジュールを削除すると、アンインストールフックを実行できず、データベースに多くのリントが保持されます。いくつかのテーブルだけでなく、主に変数とロケール。モジュールをコードベースから削除しないと、コードベースが古くなった未使用のコードで成長することになります。これによりパフォーマンスのオーバーヘッドは発生しませんが、コードの維持はますます難しくなります。
これにどう対処しますか?
[編集:展開が困難な手順であるという注意を追加、多くの場合]