ruby/rubygems · error · CyclicDependencyError

Your bundle requires gems that depend on each other, creatin

Error message

Your bundle requires gems that depend on each other, creating an infinite loop. Please remove either gem '#{cgems[0]}' or gem '#{cgems[1]}' and try again.

What it means

Error "Your bundle requires gems that depend on each other, creating an infinite loop. Please remove either gem '#{cgems[0]}' or gem '#{cgems[1]}' and try again." thrown in ruby/rubygems.

Source

Thrown at lib/bundler/spec_set.rb:332

      other.select do |other_spec|
        spec = exemplary_spec(other_spec.name)
        next unless spec

        selected = spec.version == other_spec.version && valid_dependencies?(other_spec)
        other_spec.source = spec.source if selected
        selected
      end
    end

    def valid_dependencies?(s)
      validate_deps(s) == :valid
    end

    def sorted
      @sorted ||= ([lookup["rake"]&.first] + tsort).compact.uniq
    rescue Gem::TSort::Cyclic => error
      cgems = extract_circular_gems(error)
      raise CyclicDependencyError, "Your bundle requires gems that depend" \
        " on each other, creating an infinite loop. Please remove either" \
        " gem '#{cgems[0]}' or gem '#{cgems[1]}' and try again."
    end

    def extract_circular_gems(error)
      error.message.scan(/@name="(.*?)"/).flatten
    end

    def lookup
      @lookup ||= begin
        lookup = {}
        @specs.each do |s|
          index_spec(lookup, s.name, s)
        end
        lookup
      end
    end

View on GitHub (pinned to 86cbb817a3)

When it happens

Trigger: Thrown at lib/bundler/spec_set.rb:332 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ruby/rubygems@86cbb817a3 (2026-08-23). Data as JSON: /api/errors/bd20f23769116633. Report an issue: GitHub.