InvocationChain tracks the chain of task invocations to detect circular dependencies.
Class level append.
# File lib/rake/invocation_chain.rb, line 27 def self.append(invocation, chain) chain.append(invocation) end
Append an invocation to the chain of invocations. It is an error if the invocation already listed.
# File lib/rake/invocation_chain.rb, line 14 def append(invocation) if member?(invocation) fail RuntimeError, "Circular dependency detected: #{to_s} => #{invocation}" end conj(invocation) end
Is the invocation already in the chain?
# File lib/rake/invocation_chain.rb, line 8 def member?(invocation) head == invocation || tail.member?(invocation) end
Convert to string, ie: TOP => invocation => invocation
# File lib/rake/invocation_chain.rb, line 22 def to_s "#{prefix}#{head}" end
# File lib/rake/invocation_chain.rb, line 33 def prefix "#{tail.to_s} => " end