はじめに
みなさまこんにちは。
今回、railsのgemであるRails ERDを使用してみたのでまとめました。
Rails ERDとは
RailsのモデルからER図を自動生成することができるgem
以下の画像のようにER図を自動生成してくれます。
出典
セットアップ
Graphvizをインストール (オープンソースのグラフ可視化ソフトウェア)
Graphvizとはグラフ作成用のツールで、DOT言語というものを用いてテキストファイルを画像として出力することが できる便利なやつです。
$ brew install graphviz
rails ERDをgemに追加
group :development, :staging, :production do
gem 'rails-erd'
end
$ bundle install
実行方法
これだけ
$ bundle exec erd
開いてみると、こんな感じのER図が生成されています。めちゃ便利。 今回はまぁまぁ適当にECサイトで使いそうなモデルを書いて出力してみました。
カスタマイズもできます
オプションをつけるとカスタマイズ可能になります。
上で生成したER図にオプションをつけて生成します。
- タイトルをつける
- 主キーを表示
- ファイルの名前をつける
- 出力されるファイルの拡張子の設定(デフォルトだとpdf)
$ bundle exec erd --title="お試しECサイトER図" --attributes=primary_keys --filename=ec_test_er --filetype=png
その他オプションはこちらから
https://voormedia.github.io/rails-erd/customise.html
中身はどうなってんの?
詳しいことはあまりわかりませんでしたが、なんとなく、、、、
-
Rails がすでにモデルの情報や関連付けの情報などは用意していて、そのデータをrails erdで加工している。
-
ActiveRecord::Base.descendantsメソッドで、アプリケーション内の全てのActiveRecordモデルクラスを返している
-
reflect_on_all_associationsメソッドでモデルクラスのすべてのアソシエーションを返している。
つまり、belongs_to、has_one、has_many、has_many :through、has_and_belongs_to_manyなどのすべてのアソシエーションを含む配列を返す
-
reflect_on_all_associationsメソッドから得られるAssociationReflection オブジェクト から関連付けに関する情報を得ている
-
エンティティ、カラムの情報(カラム名、PK, UK, FKなど)、関連付け、カーディナリティは、結局のところモデルと AssociationReflection オブジェクトからうまく情報を取り出して得ている
さいごに
いいねぇ