Создать диаграмму моделей с помощью железной дороги - PullRequest
3 голосов
/ 22 марта 2010

Railroad - отличный инструмент UML для Ruby on Rails.Он может автоматически генерировать диаграммы классов моделей и контроллеров.

Для моделей на диаграмме классов, создаваемой железной дорогой, показаны атрибуты каждой модели и связи между одной моделью и другой. Пример диаграммы можно найти здесь.Разработчику очень полезно видеть атрибуты и ассоциации моделей.В то время как атрибуты и ассоциации раскрывают внутренние состояния и отношения моделей, методы определяют их поведение.Все они желательны в диаграмме классов.Я бы хотел, чтобы железная дорога генерировала диаграмму классов, в которой также перечислены методы для моделей, которые помогут мне узнать, что делает каждая модель.Я знаю, что методы отображаются в диаграмме, которая генерируется для контроллеров , но я не вижу такой опции для диаграммы моделей.Кто-нибудь знает, как это сделать с железной дорогой?Или это возможно?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 03 мая 2010

Железная дорога не добавляет методы модели на диаграмму. Вы можете обезьяна исправить код железной дороги, чтобы получить эту функцию.

Создайте файл с именем 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

Теперь для запуска железной дороги вам понадобится рейк-задача (это нужно, чтобы убедиться, что патч загружен).

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.svg и doc/controllers.svg. Если вы работаете в Windows, измените задачу rake соответствующим образом.

Примечание 1 : задача Rake взята из файла readme Railroad.

Примечание 2 Я не проверял код.

1 голос
/ 22 марта 2010

взято из "http://railroad.rubyforge.org/"

Использование:

railroad [options] command


Models diagram options

* -a, --all
  Include all models (not only ActiveRecord::Base derived)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...