プラグインのライフサイクルとエンティティProxy再生成/スキーマ更新タイミングの調整 #2546
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
概要(Overview・Refs Issue)
プラグイン削除時にスキーマ更新するためにProxyの再生成も合わせて実行タイミングを変更
方針(Policy)
以下のようなEntity拡張Traitを含むプラグインがあるとき、本体側ではProxyの再生成とスキーマの更新を行う必要があります。
少なくともプラグインが有効のときには、以下の状態になる必要があります。
dtb_product
テーブルにhoge
カラムが追加されているプラグインが無効のときは、プラグインに含まれるすべての機能が無効になっている必要があるため、Traitも利用されないようにするべきです。しかしプラグインによって作られたデータは、プラグインを無効化したあとで再度有効化する場合を考えると、残しておく必要があります。
これらを踏まえて、プラグインのライフサイクル内でのTraitとスキーマの関係は以下のようにしました。
スキーマは更新される
スキーマはインストール時に更新済み
スキーマは残ったまま
テスト(Test)
相談(Discussion)
app/proxy/entity
ではなく一時ディレクトリにProxyを生成してからアノテーションを読み込んでいますが、Traitから直接アノテーションを読み込んでメタデータを自力でマージしたほうが良いのかも。