21st Wed
Model同士の関係をグラフで表示するプラグイン
記事の引越しから漏れていたのでサルベージ。
RubyInsideで紹介されていたUsing Omnigraffle to visualise Rails model associationsに触発されて、 Model同士の関係をグラフで表示するプラグインを作ってみました。
こんな感じのグラフを表示します。

使い方は、まずプラグインをインストールします。
$ ./script/plugin install http://svn.labs.drecom.jp/rails/plugins/trunk/model_graphこのプラグインはControllerジェネレータになっているので、次のように ModelGraphを表示するControllerを生成します。
$ ./script/generate model_graphこれによってModelGraphControllerが生成されるので、あとは'/model_graph'にアクセスすれば、上図のようなグラフが表示されます。もちろんGraphVizに依存しているので、事前にインストールしておく必要があります。
オリジナルの実装に加えて、app/models以外の場所に存在するすべてのModelの関係を表せるように改良してあります。
デフォルトのURLマッピングを削除している場合は、routes.rbにmodel_graphコントローラのindexアクションにマップするURLの記述を追加してください。
map.connect 'model_graph', :controller => 'model_graph'ジェネレータプラグインなので、不要になったら
$ ./script/destroy model_graphを実行すれば削除できます。
デフォルトではPNG形式の画像が出力されますが、'/model_graph?format=svg'のようにフォーマットを指定する事で、GraphVizがサポートするpng、gif、jpeg、svgの4種類の形式で出力する事ができます。
posted by
genki on Wed 21 Nov 2007 at 13:22 with 0 comments