RailRoad
Generador de diagramas para Ruby on Rails
Generador de diagramas para Ruby on Rails
RailRoad es un generador de diagramas de clases para aplicaciones desarrolladas con Ruby on Rails. Se trata de un script Ruby que carga las clases de la aplicación y analiza sus propiedades (atributos, métodos) y relaciones (herencia, asociaciones de modelos como has_many, etc.). Su salida es la descripción de un grafo en el lenguaje DOT, que puede ser manipulada con herramientas como Graphviz.
RailRoad puede generar:
Nota del author: Esta no es una idea original.Rdoc genera diagramas DOT a partir de código Ruby, y existen otras herramientas que producen los mismos diagramas que RailRoad genera. Es sólo que ninguno de dichos programas se ajusta a mis necesidades, por lo que decidí desarrollar uno yo mismo (y jugar un poco más con las capacidades de introspección de Ruby).
Ejecute RailRoad en el directorio raíz de la aplicación Rails. Puede redirigir su salida hacia un archivo .dot o conectarla mediante un "pipe" con las utilidades dot o neato para producir un gráfico. Los diagramas de modelo son mejor procesados mediante dot, en tanto que para los diagramas de controladores se recomienda el uso de neato.
railroad [opciones] comando
-b, --brief-e, --exclude file1[,fileN]-i, --inheritance-l, --label-o, --output ARCHIVOARCHIVO-r, --root PATHPATH como la raíz de la aplicación-v, --verbose-a, --allActiveRecord::Base)--hide-magic--hide-types-j, --join-m, --modules-p, --plugins-models-t, --transitive--hide-public--hide-protected--hide-private-h, --help--version(Debe indicar uno de ellos)
-M, --models-C, --controllers-A, --aasmrailroad -o modelos.dot -Mrailroad -a -i -o modelos_completo.dot -Mrailroad -M | dot -Tsvg > modelos.svgrailroad -C | neato -Tpng > controladores.pngrailroad -hPara producir un archivo PNG a partir de un diagrama de modelos generado por RailRoad, puede ejecutar el siguiente comando:
dot -Tpng modelos.dot > modelos.png
Para hacerlo con un diagrama de controladores, utilice neato en vez de dot:
neato -Tpng controladores.dot > controladores.png
Si desea producir un archivo SVG (vectorial, escalable, editable), puede hacer lo siguiente:
dot -Tsvg modelos.dot > modelos.svg neato -Tsvg controladores.dot > controladores.svg
Importante: Existe un bug en las herramientes de Graphviz
al generar archivos SVG que causa un desbordamiento de texto.
Puede resolver este problema editando el archivo (con un editor de textos, no un editor gráfico
de SVG) y reemplazando, alrededor de la línea 12,
"font-size:14.00;" por "font-size:11.00;", o bien ejecutando el siguiente
comando (ver "man sed"):
sed -i 's/font-size:14.00/font-size:11.00/g' diag.svg
Nota: Para visualizar y editar SVG hay una excelente herramienta libre llamada Inkscape (similar a Adobe Illustrator). Para procesar DOT también puede utilizar Omnigraffle (en Mac OS X).
En sistemas derivados de Unix, puede definir los siguientes scripts del shell:
models2svg
#!/bin/bash railroad $* -M | \ dot -Tsvg | \ sed 's/font-size:14.00/font-size:11.00/g'
controllers2svg
#!/bin/bash railroad $* -C | \ neato -Tsvg | \ sed 's/font-size:14.00/font-size:11.00/g'
Y luego generar archivos SVG ejecutando comandos como los siguientes:
models2svg -i -l -a -m > modelos.svg controllers2svg -i -l > controladores.svg
(Note que el comando, -M o -C, no es necesario.)
(Gracias a Thomas Ritz por el código.)
En su aplicación Rails application, añada las siguientes tareas rake en
'lib/task/diagrams.rake':
namespace :doc do
namespace :diagram do
task :models 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 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
Luego, 'rake doc:diagrams' generará 'doc/models.svg' y
'doc/controllers.svg'.
RailRoad ha sido probado con Ruby 1.8.5 y aplicaciones Rails 1.1.6 a 1.2.3. No existen requerimientos adicionales (sin embargo, todos los requerimientos de su aplicación Rails deben estar instalados.
Para ver o exportar los diagramas DOT diagrams, necesitará las herramientas de procesamiento de Graphviz.
El desarrollo comenzó a finales de marzo de 2006. RailRoad ha sido probado en los dearrollos Rails personales del autor, como así también en varias aplicaciones Rails libres "grandes" (como Typo), con resultados satisfactorios.
Sin embargo, que la salida producida por RailRoad se ajuste a las necesidades de su autor no es garantía de que lo dejará conforme a usted. Si desea reportar un bug (o tiene algún tipo de sugerencia), por favor, visite la página del proyecto en RubyForge. Cualquier comentario será muy apreciado.
Si desea contribuir al desarrollo de RailRoad, puede
Estos son algunos diagramas de ejemplo producidos por RailRoad. (No necesariamente generados con la última versión.)
Nota del autor: Sé que estos diagramas no se parecen mucho a los diagramas UML, pero prefiero algo más cercano a BON.
La aplicación Depot es un ejemplo bien conocido del libro "Agile Web Development with Rails". (¿Qué mejor manera de comenzar a probar RailRoad?)
|
Diagrama de modelos |
Controllers diagram |
rTPlan es una aplicación para la planificación de tareas de proyectos. Su versión 0.4.0 tiene 6 modelos, 11 controladores y 550 líneas de LOC de código.
|
Diagrama de modelos |
Diagrama de controladores |
Typo es un sistema de weblog (una de las aplicaciones opensource más exitosas) desarrollado con Rails. Y también es un programa "grande": 26 controladores, 59 modelos and 5469 líneas de LOC de código, para la versión 4.1.
Los diagramas de modelos han sido generados sin la opción "--all", para omitir
las clases que no sean derivadas de ActiveRecord::Base (sólo para obtener un diagrama más claro.)
|
Diagrama de modelos |
Diagrama de controladores |
Para sistemas complejos, RailRoad también puede generar diagramas breves.
|
Diagrama de modelos |
Diagrama de controladores |
Para diagramas de modelos complejos, también puede omitir las relaciones de herencia (no
usando el modificador "--inheritance").
|
Diagrama de modelos |
Si utiliza gem puede instalar RailRoad con el comando:
gem install railroad
También puede obtener el código fuente completo desde el repositorio del proyecto en RubyForge.
RailRoad es desarrollado por Javier Smaldone (como parte de sus experimentos con RoR).
Este programa es distribuido bajo la Licencia Pública General de GNU (como software libre).
© 2007 - Javier Smaldone. Logo diseñado por Agencia Usina
Valid XHTML 1.1