MDA/MDD/TDD/DDD/DDDDDDD
posts - 536, comments - 111, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

railroad使用

Posted on 2010-10-14 18:56 leekiang 阅读(329) 评论(0)  编辑  收藏 所属分类: rails
1,gem install railroad 装的版本是0.5.0
2, 安装graphviz-2.26.3.msi
3, 在应用目录下railroad -M | dot -Tsvg > models.svg,报错:
C:/Ruby186/lib/ruby/gems/1.8/gems/railroad-0.5.0/lib/railroad/app_diagram.rb:54:
in `reopen': No such file or directory - /dev/null (Errno::ENOENT)
   搜到篇文章说把c:/Ruby186/lib\ruby\gems\1.8\gems\railroad-0.5.5\lib\railroad下的app_diagram.rb的54行改为STDOUT.reopen('NUL:')
把controllers_diagram.rb的39行改为require "app/controllers/application_controller.rb"
按要求修改后在应用下执行railroad -a -i -M | dot -Tpng > models.png,又报:
D:/netbeansWorkSpace/redmine/vendor/rails/activesupport/lib/active_support/w
hiny_nil.rb:52:in `method_missing': undefined method `klass' for nil:NilClass (N
oMethodError)

注:ruby为1.8.6,rails为2.3.5
参考:
http://www.javaeye.com/topic/88700
http://blog.brzezinka.eu/webmaster-tips/ruby/ror-railroad-plugin-with-rails-2-3-5-on-windows-error


该文章后面讲了如何使用rake自动生成,copy如下:
To automate the process of creating schemes, you can create Rails task. In your rails_project_dir/Libs/tasks create diagrams.rake and copy the text:
namespace :doc do
  namespace 
:diagram do
    task 
:models do
      sh 
"railroad -a -i -M | dot -Tpng > doc/models.png"
      sh 
"railroad -i -l -a -m -M | dot -Tsvg doc/models.svg"
    end

    task 
:controllers do
      sh 
"railroad -i -l -C | neato -Tsvg > doc/controllers.svg"
    end
  end

  task 
:diagrams => %w(diagram:models diagram:controllers)

end

Now you can run the task by typing in console: rake doc:diagrams to generate all diagrams (for models an controllers) or rake doc:diagram:models to generate diagram for models only.

Due to the information on RailsRoad Docs, there is a bug in Graphvis while crating svg graphic. There is a simple way to correct it (citation from RailsRoad Docs):

Important: There is a bug in Graphviz tools when generatingSVG files that cause a text overflow. You can solve this problem editing (with a text editor, not a graphical SVG editor) the file and replacing around line 12 „font-size:14.00;” by „font-size:11.00;„, or by issuing the following command (see „man sed„):

sed -i 's/font-size:14.00/font-size:11.00/g' file.svg

Note: For viewing and editing SVG there is an excellent opensource tool called Inkscape (similar to Adobe Illustrator.) For DOTprocessing you can also use Omnigraffle (on Mac OS X).




只有注册用户登录后才能发表评论。


网站导航: