class Rake::InvocationChain

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

Constants

EMPTY

Public Class Methods

append(invocation, chain) click to toggle source

Class level append.

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

Public Instance Methods

append(invocation) click to toggle source

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
member?(invocation) click to toggle source

Is the invocation already in the chain?

# File lib/rake/invocation_chain.rb, line 9
def member?(invocation)
  head == invocation || tail.member?(invocation)
end
to_s() click to toggle source

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

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

Private Instance Methods

prefix() click to toggle source
# File lib/rake/invocation_chain.rb, line 34
def prefix
  "#{tail} => "
end