構成のインポートとモジュールの更新はどの順序で実行する必要がありますか?


10

モジュールのスキーマバージョンはKey-Valueストレージに格納されるため、各サイトに固有であり、構成管理を通じて同期されません。更新では、構成にカプセル化されていない調整(データベースの更新など)が必要になる場合がありますが、構成に含まれる可能性のあるその他の変更(新しい構成値の追加など)があるためです。

  • 構成のインポートとデータベースの更新をどちらの順序で実行してもリスクはありますか?
  • これらの操作を実行するための優先順序は何ですか?
  • 更新フックは、すでにインポートされている可能性のある構成アイテムに対して特別な調整を行う必要がありますか?
  • 本番環境を完全に更新するために必要となる可能性のある他の操作はありますか?

回答:


11

構成をインポートする前に更新を実行する必要があります

コアに対する保留中の問題により、構成のインポートを許可する前に、コードとスキーマのバージョン確実に一致します


更新前の構成インポートに関する問題

  • 構成値に依存する更新フックは、インポート前の値で実行された場合とは異なる結果になる可能性があります。

  • すでに存在する構成エンティティを作成しようとすると、更新が失敗する可能性があります。

更新後の構成のインポートに関する懸念

  • 新しい構成エンティティを導入する更新が最初に実行された場合、構成内のものとは異なるUUIDを持つ新しい構成アイテムが作成されます。ただし、設定がインポートされたら、エンティティを設定バージョンに置き換える必要があります。

    エンティティを置き換えると関連するコンテンツに影響する場合、ここで潜在的な問題が発生する可能性があります。たとえば、更新によってコンテンツが1つのフィールドから別のフィールドに移行される場合、構成のインポート時にフィールドが完全に置き換えられ、コンテンツが失われる可能性があります。この場合、ターゲット環境で更新を実行し、結果の構成をエクスポートするために、デプロイメントプロセスを調整する必要があります。


私は以前、順序は重要ではないという答えを残していました(更新と構成の順序は、実装された順序と同じでなければなりません)。更新後は常に構成をエクスポートする必要があるので、私は間違っていたと思います。つまり、ローカルでは更新してからエクスポートし、デプロイでは更新してインポートします。
ognockocaten

リンク先の問題で説明されているように、エンティティの更新で新しいフィールドをインポートする必要がある場合や、post_updateフックが失敗する場合があります。この場合、データベースを更新する前に構成のインポートを行う必要があります。これに関する最新の見解
atwixtor
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.