記事の引越しから漏れていたのでサルベージ。
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種類の形式で出力する事ができます。