Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env ruby
- require "config/environment"
- Dir.glob("app/models/*rb") { |f|
- require f
- }
- asso = String.new # to store associations and output at end
- puts "digraph x {
- rankdir = TB;
- node[shape=box];"
- Dir.glob("app/models/*rb") { |f|
- f.match(/\/([a-z_]+).rb/)
- classname = $1.camelize
- klass = Kernel.const_get classname
- if klass.respond_to?('columns')
- if klass.superclass == ActiveRecord::Base
- puts classname + " [label=\"### " + classname + " ###\n\n" + klass.columns.map{|c| c.name }.join('\l') + "\"];"
- asso << klass.reflect_on_all_associations(:has_many).map { |a| classname + " -> " + a.name.to_s.camelize.singularize + "[arrowhead=inv];\n" }.join
- asso << klass.reflect_on_all_associations(:has_one).map { |a| classname + " -> " + a.name.to_s.camelize.singularize + ";[arrowhead=dot];\n" }.join
- asso << klass.reflect_on_all_associations(:belongs_to).map { |a| classname + " -> " + a.name.to_s.camelize.singularize + ";\n" }.join
- else
- puts classname + " [label=\"### " + classname + " ###\n\n(" + klass.superclass.name + ")\"];" # STI Classes
- end
- end
- }
- puts asso
- puts "}"
Add Comment
Please, Sign In to add comment