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 rake-13.0.3/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 rake-13.0.3/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 rake-13.0.3/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 rake-13.0.3/lib/rake/invocation_chain.rb, line 23
def to_s
  "#{prefix}#{head}"
end

Private Instance Methods

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