ruby-graphviz で遊んでみる
インストール
サーバはCentOS5.2 x86_64で。
$ cd /etc/yum.repos.d/ $ sudo wget http://www.graphviz.org/graphviz-rhel.repo $ sudo yum list
- 必要なものをインストール
$ sudo yum install graphviz graphviz-doc graphviz-gd graphviz-graphs
- gemでruby-graphvizをインストール*2
$ sudo gem install ruby-graphviz
サンプル
指定したディレクトリツリーをruby-graphvizでグラフにしてみた。*3
#!/usr/bin/ruby $:.unshift( "../lib" ); require 'rubygems' gem "ruby-graphviz" require "graphviz" def usage puts "#{__FILE__} [directory]"; exit end usage if ARGV.size == 0 usage unless File.directory?(ARGV[0]) current = Dir.pwd # :type => (graph digraph) # :rankdir => (LR RL) # :use( is layout) => (circo dot fdp neato nop nop1 nop2m, twopi) $g = nil $g = GraphViz::new("G", :type => "graph", :use => "dot", :rankdir => "LR", :output => "png" ) # :shape => # (plaintext ellipse oval circle egg triangle box diamond trapezium # parallelogram house hexagon octagon note tab box3d component) $g.node[:shape] = "box" def dirs(dir) Dir.chdir(dir) $g.add_node(("\"#{dir}\"")) Dir.glob("*\0.??*").each {|o| st = "#{dir}/#{o}" #$g.add_edge($g.add_node(("\"#{dir}\"")), $g.add_node("\"#{dir}\/#{o}\"")) $g.add_edge($g.add_node(("\"#{dir}\"")), $g.add_node("\"#{dir}\/#{o}\"")) if File.directory?(st) dirs(st) if File.directory?(st) } end dirs(File.expand_path(ARGV[0])) Dir.chdir(current) $g.output( :file => "result.png" )