如何在分阶段环境中正确删除模块?
一些模块具有取消安装例程。通常会删除该模块的数据库表,变量表中的变量以及该模块引入的语言环境。这些例程位于该.install模块的中。 因此,如果没有该模块,则无法运行它们。所以这是我们当前的步骤。我的问题是:这可以更简单,更有效地完成吗?说我删除foo_bar模块。 在RCS中,准备一个新版本,其中: 删除了在foo_bar之上使用或构建的所有css和主题覆盖。 取决于foo_bar的模块的所有css和theme-overrides均被删除。 将该发布推送到接受状态。(使用admin / modules)使用生产数据库的最新副本测试取消安装。 如果一切顺利,则将新的代码库部署到生产环境中,然后在其中释放foo_bar及其依赖项。这将在各个模块中调用卸载,以清理数据库。 在RCS(git)中,准备一个新发行版,其中的代码实际上已被删除。 将其部署到接受测试的地方,以便我们测试是否意外地依赖于此(一些丑陋的模块或主题功能直接包含来自其他模块的文件。最著名的是CSS,JS或图像文件)。 如果接受,则将新版本部署到生产中。生产现在有一个干净的数据库和一个干净的代码库。 我看不到如何解决的问题是,这总是需要两个版本。由于在Drupal中,一个发行版要求站点处于离线状态,这意味着两次停机仅删除一个模块。它还需要两个发布过程,在专业托管环境中,这可能是非常昂贵,费时或令人沮丧的。 如果在第一次迭代中从代码库中删除模块,则无法运行卸载钩子,从而在数据库中保留了很多皮棉;不仅是几个表,而且大多数是变量和语言环境。如果我们不从代码库中删除模块,这意味着代码库将随着陈旧的未使用代码一起增长;这不会产生性能开销,但是会使维护代码越来越难。 您如何处理? [编辑:经常添加关于部署过程很困难的说明]