これは開発者にとって一般的な状況です。コードとスキーマを変更する方がはるかに簡単で、完全に理解され、UIにあまり柔軟性がない小さなコードベースがある場合は、すべてがうまくいくことが保証されます。もちろん、これはMagentoには当てはまりません。これは、自動テストや継続的インテグレーションスキームに取り組むのが非常に難しい場合があります。とは言うものの、信頼できるいくつかの既知のテスト可能な動作があります。
概要
本番環境にマージされるローカル開発を処理する場合、ファイルシステムが更新されるときに、新しい機能または変更された機能に関連するスキーマとデータの変更も適用されることを確認する必要があります。これは実際にはMagento自体がどのように機能するかです。モジュール構成ファイルは、バージョン番号を提供し、セットアップリソースを構成できます。この情報は、スキーマとデータの変更ワークフローを開始するために使用され、その結果、バージョン情報がデータベースに追加されます。ファイルが存在する場合、データベースが適切な状態にあるとシステムが推測できるのは、ファイル指定のバージョン番号とデータベースに登録されたバージョン番号の間の一貫性です。
これは、新しい/更新されたモジュールファイルが本番環境にマージされ、必要な条件が満たされた場合(たとえば、構成キャッシュが無効であるなど)、データベースのアップグレードを実行する必要があることを意味します。あなたの(適切な)懸念は、このプロセスがリモートサーバーレベルの違い、リモートデータの違いなどに基づいて壊れることがあるということです。厳密に規制された統合テストプロセスがなければ、いくらかのオーバーヘッドがあります。
攻撃の計画:適切な戦略を選択する
この領域での重要なアクティビティは、データベースに対するモジュールの影響の領域を評価することです。これは、インストールする価値のあるモジュールであれば簡単です。次のいずれかを確認してください。
- system.xmlファイル_
- SQLまたはデータフォルダにインストール/アップグレードスクリプトが存在する
- カスタムセットアップリソースクラスの存在(
global/resources
xpathで構成)
- 適切な構成XML(モジュール構成ノードのバージョン番号と
global/resources
xpathの下のセットアップリソース)
1の場合、構造を確認し、データベースへの影響がcore_config_data
テーブルに限定されることを確認します。通常、管理者がGUIを介して値を保存した場合にのみ適用されます(以下の1.も適用されることに注意してください)。
2と3については、実行するように設定されているスクリプトを確認してください。これらは、次の3つの一般的な領域に分けることができます。1。構成設定-検索setConfigData()
とdeleteConfigData()
呼び出し2.テーブルの追加と編集(新しいテーブル、列の追加など)3.EAV関連の変更と追加。EAVセットアップリソースを探します。4。非EAVデータの変更:新しいデータのインストールまたは既存のデータの変更
感覚と直感の問題ですが、データベースへの影響のレベルを測定することで、本番データをローカル開発者に複製し、セットアップワークフローをローカルでテストし、正常に機能することを確認してから、本番環境にプッシュして再実行する必要があるかどうかを判断できます。 -チェック(常にバックアップ!)。変更が広範囲にわたる場合は、サイトをオフラインにして、アップグレードの失敗後に元に戻す必要がある場合に注文や顧客データが失われないようにするのが最善の場合があります。