# File lib/rubygems/dependency_list.rb, line 80 def dependency_order result = [] disabled = {} predecessors = build_predecessors while disabled.size < @specs.size candidate = @specs.find { |spec| ! disabled[spec.full_name] && active_count(predecessors[spec.full_name], disabled) == 0 } if candidate disabled[candidate.full_name] = true result << candidate elsif candidate = @specs.find { |spec| ! disabled[spec.full_name] } # This case handles circular dependencies. Just choose a # candidate and move on. disabled[candidate.full_name] = true result << candidate else # We should never get here, but just in case we will terminate # the loop. break end end result end