Support for the Ruby 2.4 series has ended. See here for reference.
![show/hide quicksearch [+]](../../images/find.png)
Used internally to indicate that a dependency conflicted with a spec that would be activated.
Creates a new resolver conflict when dependency is in conflict with an already activated specification.
 
               # File rubygems/resolver/conflict.rb, line 24
def initialize(dependency, activated, failed_dep=dependency)
  @dependency = dependency
  @activated = activated
  @failed_dep = failed_dep
end
             
            Return the 2 dependency objects that conflicted
 
               # File rubygems/resolver/conflict.rb, line 47
def conflicting_dependencies
  [@failed_dep.dependency, @activated.request.dependency]
end
             
            A string explanation of the conflict.
 
               # File rubygems/resolver/conflict.rb, line 40
def explain
  "<Conflict wanted: #{@failed_dep}, had: #{activated.spec.full_name}>"
end
             
            Explanation of the conflict used by exceptions to print useful messages
 
               # File rubygems/resolver/conflict.rb, line 54
  def explanation
    activated   = @activated.spec.full_name
    dependency  = @failed_dep.dependency
    requirement = dependency.requirement
    alternates  = dependency.matching_specs.map { |spec| spec.full_name }
    unless alternates.empty? then
      matching = <<-MATCHING.chomp
  Gems matching %s:
    %s
      MATCHING
      matching = matching % [
        dependency,
        alternates.join(', '),
      ]
    end
    explanation = <<-EXPLANATION
  Activated %s
  which does not match conflicting dependency (%s)
  Conflicting dependency chains:
    %s
  versus:
    %s
%s
    EXPLANATION
    explanation % [
      activated, requirement,
      request_path(@activated).reverse.join(", depends on\n    "),
      request_path(@failed_dep).reverse.join(", depends on\n    "),
      matching,
    ]
  end
             
            Returns true if the conflicting dependency's name matches spec.
 
               # File rubygems/resolver/conflict.rb, line 96
def for_spec?(spec)
  @dependency.name == spec.name
end
             
            Path of activations from the current list.
 
               # File rubygems/resolver/conflict.rb, line 124
def request_path current
  path = []
  while current do
    case current
    when Gem::Resolver::ActivationRequest then
      path <<
        "#{current.request.dependency}, #{current.spec.version} activated"
      current = current.parent
    when Gem::Resolver::DependencyRequest then
      path << "#{current.dependency}"
      current = current.requester
    else
      raise Gem::Exception, "[BUG] unknown request class #{current.class}"
    end
  end
  path = ['user request (gem command or Gemfile)'] if path.empty?
  path
end