自動生成物・introspection・本番限定の差分は、宣言でなく実行環境の実態の写像として一次情報で切り分ける
デバッグ
運用
開発ワークフロー
原則
生成スキーマ・introspection 出力・本番でだけ出る不具合の不可解な差分は、コードやツールの不具合と決めつけず、実行環境と実データの実態の写像として読む。最適化するのは「宣言ファイル・依存表記・ツール出力を額面で信じず、実環境のメタ情報を一次情報に当たって原因を切り分けること」、避けるのは「宣言と実態が一致している前提で、差分をコード差やツールのバグに帰属させること」。
判断基準
- introspection やコード生成ツールは、定義ファイルではなく接続中の実環境(実 DB の制約・定義など)を読む。同一コミットでも生成物が人によって食い違うときは、コード差ではなく各自の実環境(取り込み元の dump、ボリュームの中身、適用済みのマイグレーション差)を疑い、実環境のメタ情報を直接突き合わせて切り分ける。
- 生成物の差分を恒久パッチで握り潰さない。安定化は「生成前に定義から環境を作り直して入力を揃える」か「生成後処理で出力を正規化する」のどちらかで、入力側を実態に合わせる。
- ツールのバージョン差で生成出力が変わりうる前提を持つ。意図と無関係な型エラーや差分は、設定変更ではなく生成器のバージョン挙動を一次情報で確認してから対処する。
- 本番でだけ起きる不具合は、宣言された依存バージョンでなく実際にロードされる実バージョンを疑う。診断ログに解決経路ベースの実バージョンや実ロード物の特徴を出し、宣言と実態のズレを切り分ける。
検証
差分や不具合を見たら「これはコードの差か、実行環境・実データの差か」を必ず分け、実環境のメタ情報・実ロード物・実データの実値など一次情報で確認できるまで原因を確定しない。
根拠(synthesize 元)
- 288 introspect 生成スキーマが人によって差分する場合は DB の実態を疑う
- 387 DB introspection 生成ファイルの差分はローカル DB の実態に依存する
- 348 introspect の DEFAULT はツールのバージョンで生成が変わる
- 351 本番でしか起きない不具合は実行環境の実バージョンと依存コードを診断ログで取る