gpt4 book ai didi

ruby-on-rails - 使用铁路创建模型图

转载 作者:行者123 更新时间:2023-12-04 03:35:15 24 4
gpt4 key购买 nike

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

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

谢谢!

最佳答案

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

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

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 我还没有测试代码。

关于ruby-on-rails - 使用铁路创建模型图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2490127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com