使用铁路创建模型图

时间:2010-03-22 05:18:31

标签: ruby-on-rails uml

Railroad是Ruby on Rails的一个很棒的UML工具。它可以自动生成模型和控制器的类图。

对于模型,铁路生成的类图显示了每个模型的属性以及一个模型与另一个模型之间的关联。 A sample diagram可以在这里找到。对于开发人员来说,查看模型的属性和关联非常有用。虽然属性和关联揭示了模型的内在状态和关系,但方法指定了它们的行为。它们在类图中都是可取的。我想铁路公司生成一个类图,它也列出了模型的方法,这将帮助我了解每个模型的作用。我知道方法显示在a diagram that is generated for controllers中,但我没有看到模型图的选项。有人知道如何用铁路做到这一点吗?或者这可能吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

Railroad不会将模型方法添加到图表中。您可以修补铁路代码以获得此功能。

rail_road_monkey_patch.rb目录中创建一个名为config/initializers的文件,并添加以下代码。

require 'app_diagram'

# RailRoad models diagram
class ModelsDiagram 

  alias_method_chain :process_class, :methods

  def process_class_with_methods(current_class)
    if current_class.is_a? Class
      na = {:public => [], :protected => [], :private => []}
      na[:public] = current_class.public_instance_methods(false).sort unless @options.hide_public
      na[:protected] = current_class.protected_instance_methods(false).sort unless @options.hide_protected
      na[:private] = current_class.private_instance_methods(false).sort unless @options.hide_private
      @graph.add_node ['model', current_class.name, na]
    end
    process_class_without_methods(current_class)
  end
end

现在你需要一个rake任务来运行铁路(你需要这个来确保加载补丁)。

namespace :doc do
namespace :diagram do
  task :models => :environment do
    sh "railroad -i -l -a -m -M | dot -Tsvg | sed 's/font-size:14.00/font-size:11.00/g' > doc/models.svg"
  end

  task :controllers => :environment do
    sh "railroad -i -l -C | neato -Tsvg | sed 's/font-size:14.00/font-size:11.00/g' > doc/controllers.svg"
  end
end

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

然后,rake doc:diagrams生成doc/models.svgdoc/controllers.svg。如果您使用的是Windows,请相应地更改rake任务。

注1 :Rake任务取自Railroad自述文件。

注2 我还没有测试过代码。

答案 1 :(得分:1)

取自“http://railroad.rubyforge.org/

用法:

railroad [options] command


Models diagram options

* -a, --all
  Include all models (not only ActiveRecord::Base derived)