Asakusa.rb で Graphviz on Rails を試してみるよ。
- 事前にGraphvizをインストールしておくこと。
Railsプロジェクト作成
$ rails graphviz create create app/controllers create app/helpers create app/models ..... create log/production.log create log/development.log create log/test.log $ cd graphviz/ $ script/generate controller Graphviz exists app/controllers/ exists app/helpers/ create app/views/graphviz exists test/functional/ create app/controllers/graphviz_controller.rb create test/functional/graphviz_controller_test.rb create app/helpers/graphviz_helper.rb
とりあえず表示できるところまで
- app/controller/graphviz_controller.rb
class GraphvizController < ApplicationController def index end end
- config/routes.rb
(endの前に追加) map.connect '', :controller => "graphviz"
- app/views/graphviz/index.rhtml
- ※原文からちょっと修正
- [参考]Rails2.0でのform_remote_tag - tragicomedy
- http://d.hatena.ne.jp/taigou/20080127/1201427070
- ※原文からちょっと修正
<html> <head> <title>Graphviz on Rails</title> <%= javascript_include_tag "prototype" %> </head> <body> <h1>Graphviz on Rails</h1> <% form_remote_tag :update=>"dotsvg", :url=>{:action=>'update_dotsvg'} do %> digraph G {<br /> <%= text_area(:graph, params[:graph], :cols => 40, :rows => 5) %> <br /> } <%= submit_tag "Go" %> <% end %> <div id="dotsvg"> <!-- An SVG graphic will go here when the form is submitted --> </div> </body> </html>
- app/controllers/graphviz_controller.rb
- 原文だと@paramsになっているんだけど、@はとる
def update_dotsvg gv=IO.popen("/usr/local/bin/dot -q -Tsvg","w+") gv.puts "digraph G{", params[:graph], "}" gv.close_write @gvsvg=gv.read end
これで Webrick 起動したらなんか表示できた。
$ script/server