Rake task para generar diagramas con RailRoad

Hoy estaba usando RailRoad para generar los diagramas de modelos y de controladores de un proyecto Rails en el que estoy trabajando y he visto que en la página de RailRoad vení­a el código (gracias a Thomas Ritz) de una tarea rake que genera los diagramas en svg y los deja en el directorio doc de la aplicación.

Como también querí­a que generase los diagramas en png la he modificado para que los incluya. Queda así­ (lib/tasks/diagrams.rake):


Rake task tomada de la página de Railroad (http://railroad.rubyforge.org/)

Gracias a Thomas Ritz por el código (http://www.galaxy-ritz.de/)

Modificada por Amaia Castro (amaia@dabne.net) para incluir la generación de

diagramas en png.

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 :models_png do sh "railroad -i -l -a -m -M | dot -Tpng | sed 's/font-size:14.00/font-size:11.00/g' > doc/models.png" 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
task :controllers_png do
  sh "railroad -i -l -C | neato -Tpng | sed 's/font-size:14.00/font-size:11.00/g' > doc/controllers.png"
end

end

task :diagrams_svg => %w(diagram:models diagram:controllers) task :diagrams_png => %w(diagram:models_png diagram:controllers_png) task :diagrams => %w(diagram:models diagram:models_png diagram:controllers diagram:controllers_png) end

Para que funcione hay que tener instalada la gem railroad y, en Ubuntu (y otros linux supongo), el paquete graphviz, que es el que contiene dot y neato, para hacer la conversion de DOT a svg o png.

Luego en nuestra aplicación rails ejecutar rake doc:diagrams para generar todos los diagramas o rake doc:diagram:models para generar el de modelos en svg, por ejemplo.

Añadir nuevo comentario