In Files

  • rubygems/resolver/conflict.rb

Class/Module Index [+]



Used internally to indicate that a dependency conflicted with a spec that would be activated.



The specification that was activated prior to the conflict


The dependency that is in conflict with the activated gem.

Public Class Methods

new(dependency, activated, failed_dep=dependency) click to toggle source

Creates a new resolver conflict when dependency is in conflict with an already activated specification.

               # File rubygems/resolver/conflict.rb, line 23
def initialize(dependency, activated, failed_dep=dependency)
  @dependency = dependency
  @activated = activated
  @failed_dep = failed_dep

Public Instance Methods

conflicting_dependencies() click to toggle source

Return the 2 dependency objects that conflicted

               # File rubygems/resolver/conflict.rb, line 46
def conflicting_dependencies
  [@failed_dep.dependency, @activated.request.dependency]
explain() click to toggle source

A string explanation of the conflict.

               # File rubygems/resolver/conflict.rb, line 39
def explain
  "<Conflict wanted: #{@failed_dep}, had: #{activated.spec.full_name}>"
explanation() click to toggle source

Explanation of the conflict used by exceptions to print useful messages

               # File rubygems/resolver/conflict.rb, line 53
def explanation
  activated   = @activated.spec.full_name
  requirement = @failed_dep.dependency.requirement

  "  Activated %s via:\n    %s\n  instead of (%s) via:\n    %s\n" % [
    activated,   request_path(@activated).join(', '),
    requirement, request_path(requester).join(', '),
for_spec?(spec) click to toggle source

Returns true if the conflicting dependency’s name matches spec.

               # File rubygems/resolver/conflict.rb, line 66
def for_spec?(spec) ==
request_path(current) click to toggle source

Path of activations from the current list.

               # File rubygems/resolver/conflict.rb, line 94
def request_path current
  path = []

  while current do
    requirement = current.request.dependency.requirement
    path << "#{current.spec.full_name} (#{requirement})"

    current = current.parent

  path = ['user request (gem command or Gemfile)'] if path.empty?

requester() click to toggle source

Return the Specification that listed the dependency

               # File rubygems/resolver/conflict.rb, line 112
def requester

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit