в документации GraphViz вы можете видеть, что идентификатор узла не должен начинаться с цифры. Поэтому, если вы измените свой код и замените имена двух узлов (1 и 2) на любой другой идентификатор, начинающийся с буквы или подчеркивания, это сработает:
require 'rubygems'
require 'graphviz'
@graph = GraphViz.new( :G, :type => :digraph )
@node1 = @graph.add_node("A1",
"shape" => "record",
"label" => "<left>|<f1> 1|<right>" )
@node2 = @graph.add_node("A2",
"shape" => "record",
"label" => "<left>|<f1> 2|<right>" )
@graph.add_edge(@node1.name + ":left", @node2)
# generate a random filename
filename = "/tmp/#{(0...8).map{65.+(rand(25)).chr}.join}.png"
@graph.output( :png => filename )
exec "open #{filename}"
Может быть, мне нужно заменить имя GraphViz :: Node # на GraphViz :: Node # id
Грег