class Rake::InvocationChain

InvocationChain tracks the chain of task invocations to detect circular dependencies.

Constants

EMPTY

Public Class Methods

Class level append.

# File lib/rake/invocation_chain.rb, line 28
def self.append(invocation, chain)
  chain.append(invocation)
end

Public Instance Methods

Append an invocation to the chain of invocations. It is an error if the invocation already listed.

# File lib/rake/invocation_chain.rb, line 15
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 9
def member?(invocation)
  head == invocation || tail.member?(invocation)
end

Convert to string, ie: TOP => invocation => invocation

# File lib/rake/invocation_chain.rb, line 23
def to_s
  "#{prefix}#{head}"
end