Guest User

Untitled

a guest
Mar 6th, 2018
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2. require "config/environment"
  3. Dir.glob("app/models/*rb") { |f|
  4. require f
  5. }
  6. asso = String.new # to store associations and output at end
  7. puts "digraph x {
  8. rankdir = TB;
  9. node[shape=box];"
  10. Dir.glob("app/models/*rb") { |f|
  11. f.match(/\/([a-z_]+).rb/)
  12. classname = $1.camelize
  13. klass = Kernel.const_get classname
  14. if klass.respond_to?('columns')
  15. if klass.superclass == ActiveRecord::Base
  16. puts classname + " [label=\"### " + classname + " ###\n\n" + klass.columns.map{|c| c.name }.join('\l') + "\"];"
  17. asso << klass.reflect_on_all_associations(:has_many).map { |a| classname + " -> " + a.name.to_s.camelize.singularize + "[arrowhead=inv];\n" }.join
  18. asso << klass.reflect_on_all_associations(:has_one).map { |a| classname + " -> " + a.name.to_s.camelize.singularize + ";[arrowhead=dot];\n" }.join
  19. asso << klass.reflect_on_all_associations(:belongs_to).map { |a| classname + " -> " + a.name.to_s.camelize.singularize + ";\n" }.join
  20. else
  21. puts classname + " [label=\"### " + classname + " ###\n\n(" + klass.superclass.name + ")\"];" # STI Classes
  22. end
  23. end
  24. }
  25. puts asso
  26. puts "}"
Add Comment
Please, Sign In to add comment