Railroad

テーブル間のリレーションをビジュアルに表現するソフトウェアが
Ruby on Railsにもプラグインソフトとして用意されています。

今回はRailroadを紹介しましょう。

プロジェクトAppli002に定義されている2つのテーブルは、
次のような関係であるとして具体的に説明していきましょう。


class Project < ActiveRecord::Base
has_many :members
end

class Member < ActiveRecord::Base
belongs_to :project
end



1.Graphvizのダウンロード
まずGraphviz(Graph Visualization Software)を
http://www.graphviz.org/からダウンロードします。
    

2.Graphvizのインストール
ダウンロードしたgraphviz-2.24.msiを使ってGraphvizをインストールします。
    

3.プラグインRailroadのインストール
gemを使ってインストールします。

コマンド プロンプト

C:\Ruby>gem install railroad
Successfully installed railroad-0.5.0
1 gem installed
Installing ri docmentation for railroad-0.5.0...
Installing RDoc documentation for railroad-0.5.0...

4.モデルの取り出し
Railsプロジェクトのモデル間のリレーションを把握するために、
当該プロジェクト上でrailroadを実行します。

コマンド プロンプト

D:\Rails_Project\Appli002>railroad -o models.txt -M

プロジェクトのフォルダにmodels.txtファイルができます。


5.モデルの連関図作成

(1) GVedit.exeを起動します。

(2) メニューバーの[File]から[Open]を選択しmodels.txtを読み込みます。
    


(3) メニューバーの[Grapviz]から[Run]を選択します。
    

(4) Graphviz Settingsでは、そのままOKを押します。
    

(5) graphvizによる作画が完了しました。
    

(6) 親子関係が表現されています。
    


railroadが吐き出したDOT言語ですから正しいのかもしれませんが、
でも変な感じがします。
私自身が使っているER図は鳥の足はメンバー側に書くことになっています。
そこで読み込んだmodels.txtの始端 arrowtailと終端 arrowheadの属性を変更してみました。

models.txt

digraph models_diagram {
graph[overlap=false, splines=true]
"Member" [shape=Mrecord, label="{Member|m_name :string\lcreated_at :datetime\lupdated_at :datetime\l}"]
"Project" [shape=Mrecord, label="{Project|p_name :string\lcreated_at :datetime\lupdated_at :datetime\l}"]
"Project" -> "Member" [arrowtail=tee, arrowhead=crow, dir=both]
}

これで従来の書き方のER図ができました。