はじめに
Drupalは,6から8までお付き合いしてきて,都合二回バージョンアップしたことになるが,小さなサイトでも,このバージョンアップはそれなりに面倒だった.今回のdrupal9は簡単になると言われていたが,結局バッドノウハウを突っ込む必要があった..
というのもdrupal9では未対応の,モジュールを処理するのは,それなりに工夫が必要である.工夫はおおきくわけて2つ必要である.
- alpha版などは.モジュールをインストールするときに明示的にバージョン指定しないとインストールできない.webformが当初はそうであった.
- 9未対応のモジュールを削除してもデータベースには残骸が残るのでそのお掃除が必要である.
前者は,わかってしまえばどうということもなく,また,時間が解決するであろう.今回は,後者の話である.
エラー処理
バージョンアップ後メンテナンス用のコマンド
drush cr
drush updb
drush cron
などを実行してエラーが出たら,データベースのお掃除をする必要がある.
ここでは,drupal9で未対応となったtwitterモジュールを例にとる
drush php-eval "\Drupal::keyValue('system.schema')->delete('twitter');"
これで,済めば良いが,大概エラーは出続ける.次は,やってはいけないといわれているが,ダミーのモジュールを作成する.
(drupal)/module/contrib
などのmoduleのパスがわたっているディレクトリの下に
というディレクトリを作る.そこに以下のようなファイルを置く
twitter.info.yml
name: Twitter
type: module
description: 'Dummy'
core_version_requirem: ^8.8 || ^9
これでエラーの一部は消える.しかし,まだエラーが残るようであれば,そしてそのエラーは,もはや処理済みと確信すれば,以下のようにしてエラーを抑止する.
drush ev "drupal_set_installed_schema_version('address', 8104)"
以上,二度と使わないような,バッドノウハウではある.
結論
apache+phpのCMSはwordpressといい,drupalといい,そろろそ時代遅れの感がある.これからは,nginx+JSなどのヘッドレスCMSが主役になって行くのだろう.とはいえ,ヘッドレスCMSでメインストリームになりそうなものは,有力な候補はいるものの,まだこれからであろう.それまでの少しの間は,バッドノウハウにお付き合いするしかなさそうではある.