ruby/rubygems · error · Gem::DependencyResolutionError

e.explanation

Error message

e.explanation

What it means

Error "e.explanation" thrown in ruby/rubygems.

Source

Thrown at lib/rubygems/resolver.rb:192

    needed_by_name = @needed.group_by(&:name)
    requests = result.filter_map do |package, version|
      next if Gem::PubGrub::Package.root?(package)
      spec = spec_for(package.to_s, version)
      dep = needed_by_name[package.to_s]&.first || Gem::Dependency.new(package.to_s)
      dep_request = DependencyRequest.new(dep, nil)
      ActivationRequest.new(spec, dep_request)
    end

    @cooldown_skipped = cooldown_skipped_summary(requests) if @cooldown&.active?

    requests
  rescue Gem::PubGrub::SolveFailure => e
    extended = extract_extended_explanation(e.incompatibility)
    if extended
      message = "#{e.explanation}\n\n#{extended}"
      raise Gem::DependencyResolutionError, Struct.new(:explanation).new(message)
    else
      raise Gem::DependencyResolutionError, e
    end
  end

  # PubGrub source interface methods

  def all_versions_for(package)
    versions = @sorted_versions[package].reverse # highest first
    name = package.to_s

    if (skip_dep_gems = skip_gems[name]) && !skip_dep_gems.empty?
      # Conservative mode: float the already-installed (skip) versions to the
      # front so the solver prefers them. This sets *preference* only (it feeds
      # the strategy's version-index map); it does not restrict availability, so
      # every version stays selectable via versions_for. When an installed
      # version is made impossible by a downstream conflict, the solver
      # backtracks to a newer version instead of failing. Molinillo instead
      # hard-restricted the candidate set to skip versions and raised.
      #

View on GitHub (pinned to 86cbb817a3)

Solutions

  1. Read the resolver explanation and relax conflicting version constraints
  2. Update the conflicting gems together so a compatible set can be found

When it happens

Trigger: Thrown at lib/rubygems/resolver.rb:192 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/c930b62747fb052c. Report an issue: GitHub.