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


