El caso es que tengo demasiados modelos para plasmarlo en una única imagen y quería seccionarlo en varias. La modificación permite seleccionar los modelos sobre los que realizar el diagrama.
Para lograrlo, he añadido parámetros al generador de diagramas y he añadido una tarea rake que acepta como argumentos los modelos que tomará como base.
Los cambios son los siguientes:
Fichero 'lib/railroad/yUMLmeRails.rb'
línea #13:
define generate_diagram(additional_options={})
añadido desde línea #35, tras OpenStruct.new():
only=additional_options[:only].split('//').map{|fn| fn.include?('.rb') ? fn : "app/models/#{fn}.rb" }
puts "Generating for models: " + only.join(',')
options.only=only
---------------------
Fichero 'lib/rails_road/'
Sustituir en los métodos load_classes y generate las líneas:
files = Dir.glob("app/models/**/*.rb")
files += Dir.glob("vendor/plugins/**/app/models/*.rb") if @options.plugins_models
files -= @options.exclude
por
if @options.only && @options.only.size>0
files = @options.only
else
files = Dir.glob("app/models/**/*.rb")
files += Dir.glob("vendor/plugins/**/app/models/*.rb") if @options.plugins_models
files -= @options.exclude
end
---------------------
Fichero 'lib/tasks/yUMLmeRails.rake'
añadido:
desc "Get yUML URL for only models"
task :url_only, :only, :needs => :environment do |t, args|
args.with_default(:only => [])
puts YUMLME_URL << only =""> args[:only])
end
---------------------
Además, he añadido un controlador para generar desde el navegador:
Fichero añadido: 'app/controllers/yuml_controller.rb'
class YumlController < models="Dir.glob(">b}
end
def show_model
@models=params[:models].map{|x| File.basename(x).chomp('.rb')}
@models||=[]
@address=YUMLmeRails.generate_diagram({:only => @models})
@url="http://yuml.me/diagram/scruffy/class/#{CGI.escape(@address)}"
end
private
def extract_class_name(filename)
File.basename(filename).chomp(".rb").camelize
end
end
------------------------------
Fichero 'app/views/yuml/index.html.erb'
Models
<%form_tag :action => 'show_model' do -%>
<%=check_box_tag 'models[]', m%><%=h(m)%>
<%@models.each do |m|%>
- <%end%>
<%=submit_tag 'Ver'%>
<%end%>
------------------------------------------
Fichero 'app/views/yuml/show_model.html.erb'
Modelo UML
Modelos:
- <%=h m%>
<%@models.each do |m|%>
<%end%>
URL en yuml.com:
<%=@address%>
IMAGEN DEL MODELO
<image src="<%=@url%>" />
-------------------------------
Para usar con rake: rake yUMLmeRails:url_only[model1//model2//...]
Para usar con rake y ruta: rake yUMLmeRails:url_only[app/models/model1.rb//...]
-------------------------------
Ejemplo del modelo completo con rake yUMLmeRails:url

Ejemplo del modelo usando rake yUMLmeRails:url_only[alumno]
