Sha256: 2fd03b6ff8259041c0e958d12a517d2de288ee3f2dc71663f703413ecf2c2f75

Contents?: true

Size: 962 Bytes

Versions: 215

Compression:

Stored size: 962 Bytes

Contents

module Rake

  ####################################################################
  # InvocationChain tracks the chain of task invocations to detect
  # circular dependencies.
  class InvocationChain
    def initialize(value, tail)
      @value = value
      @tail = tail
    end

    def member?(obj)
      @value == obj || @tail.member?(obj)
    end

    def append(value)
      if member?(value)
        fail RuntimeError, "Circular dependency detected: #{to_s} => #{value}"
      end
      self.class.new(value, self)
    end

    def to_s
      "#{prefix}#{@value}"
    end

    def self.append(value, chain)
      chain.append(value)
    end

    private

    def prefix
      "#{@tail.to_s} => "
    end

    class EmptyInvocationChain
      def member?(obj)
        false
      end
      def append(value)
        InvocationChain.new(value, self)
      end
      def to_s
        "TOP"
      end
    end

    EMPTY = EmptyInvocationChain.new
  end
end

Version data entries

215 entries across 169 versions & 43 rubygems

Version Path
rubyjobbuilderdsl-0.0.2 vendor/bundle/ruby/2.1.0/gems/rake-0.9.6/lib/rake/invocation_chain.rb
rubyjobbuilderdsl-0.0.1 vendor/bundle/ruby/2.1.0/gems/rake-0.9.6/lib/rake/invocation_chain.rb
active_mailer-0.0.10 test/fixtures/dummyapp_rails_3.2/vendor/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/invocation_chain.rb
judge-2.0.5 vendor/bundle/ruby/2.1.0/gems/rake-10.0.3/lib/rake/invocation_chain.rb
gss-0.0.7 vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/invocation_chain.rb
gss-0.0.6 vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/invocation_chain.rb
gss-0.0.5 vendor/bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/invocation_chain.rb
candlepin-api-0.4.0 bundle/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/invocation_chain.rb
candlepin-api-0.4.0 bundle/ruby/gems/rake-0.9.2.2/lib/rake/invocation_chain.rb
candlepin-api-0.4.0 bundle/ruby/1.8/gems/rake-0.9.2.2/lib/rake/invocation_chain.rb
torquebox-console-0.3.0 vendor/bundle/jruby/1.9/gems/rake-10.0.3/lib/rake/invocation_chain.rb
swipe-rails-0.0.5 vendor/bundle/gems/rake-10.0.4/lib/rake/invocation_chain.rb
active_mailer-0.0.9 test/fixtures/dummyapp_rails_3.2/vendor/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/invocation_chain.rb
active_mailer-0.0.8 test/fixtures/dummyapp_rails_3.2/vendor/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/invocation_chain.rb
active_mailer-0.0.7 test/fixtures/dummyapp_rails_3.2/vendor/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/invocation_chain.rb
sshp-0.0.2 vendor/ruby/1.9.1/gems/rake-10.0.4/lib/rake/invocation_chain.rb
sshp-0.0.1 vendor/ruby/1.9.1/gems/rake-10.0.4/lib/rake/invocation_chain.rb
active_mailer-0.0.6 test/fixtures/dummyapp_rails_3.2/vendor/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/invocation_chain.rb
vergissberlin-0.0.9 vendor/bundle/gems/rake-10.0.4/lib/rake/invocation_chain.rb
vergissberlin-0.0.7 vendor/bundle/gems/rake-10.0.4/lib/rake/invocation_chain.rb