lib/railroady/controllers_diagram.rb in railroady-1.1.0 vs lib/railroady/controllers_diagram.rb in railroady-1.1.1
- old
+ new
@@ -83,13 +83,16 @@
@graph.add_node ['controller', current_class.name, node_attribs]
elsif @options.modules && current_class.is_a?(Module)
@graph.add_node ['module', current_class.name]
end
- # Generate the inheritance edge (only for ApplicationControllers)
- if @options.inheritance &&
- (ApplicationController.subclasses.include? current_class)
+ # Generate the inheritance edge (only for transitive subclasses of ApplicationControllers)
+ if @options.inheritance && (transitive_subclasses_of(ApplicationController).include? current_class)
@graph.add_edge ['is-a', current_class.superclass.name, current_class.name]
end
end # process_class
+
+ def transitive_subclasses_of(klass)
+ klass.subclasses | klass.subclasses.map {|subklass| transitive_subclasses_of(subklass)}.flatten
+ end
end # class ControllersDiagram