Rails ERD で継続的に diff を取って pdf をコミットする方法

結論

  • dot フォーマットの diff を取り、差分があった場合に PDF を更新(生成)する
    • PDFファイル のバイナリは、同じスキーマの場合でも生成のたびに異なるバイナリファイルになり、diff が出てしまうから
    • dot フォーマットならば、同じスキーマに対して常に同じ出力だから

具体的な方法

たとえばシェルスクリプトならば以下のような感じになります。

ここで、出力先は db/ 配下とし、ファイル名(拡張子除く)は erd とします*1

bundle exec erd --filetype=dot

if [ -n "$(git diff --name-only db/erd.dot)" ]; then
  dot -Tpdf db/erd.dot -o db/erd.pdf
fi

参考

github.com

voormedia.github.io

*1:.erdconfig にて設定済みとします

Powered by はてなブログ