# File lib/kwala/lib/cycle_detector.rb, line 154 def find_cycle(node, path = Array.new) begin path << node.name node.state = Node::INPROGRESS all_cycles = Array.new node.edges.each do |edge| npath = path.dup case edge.state when Node::INPROGRESS npath << edge.name return npath when Node::DONE nil else c = find_cycle(edge, npath) if c return c end end end node.state = Node::DONE rescue SystemStackError => err puts err.class puts "<" puts path puts ">" node.state = Node::DONE nil end nil end