summaryrefslogtreecommitdiff
path: root/lib/rubygems/resolver/conflict.rb
diff options
context:
space:
mode:
-rw-r--r--lib/rubygems/resolver/conflict.rb41
1 files changed, 31 insertions, 10 deletions
@@ -4,25 +4,38 @@
class Gem::Resolver::Conflict
attr_reader :activated
attr_reader :dependency
attr_reader :failed_dep # :nodoc:
def initialize(dependency, activated, failed_dep=dependency)
@dependency = dependency
@activated = activated
@failed_dep = failed_dep
end
- def == other
self.class === other and
@dependency == other.dependency and
@activated == other.activated and
@failed_dep == other.failed_dep
end
def explain
"<Conflict wanted: #{@failed_dep}, had: #{activated.spec.full_name}>"
end
@@ -41,11 +54,15 @@ class Gem::Resolver::Conflict
activated = @activated.spec.full_name
requirement = @failed_dep.dependency.requirement
- " Activated %s instead of (%s) via:\n %s\n" % [
- activated, requirement, request_path.join(', ')
]
end
def for_spec?(spec)
@dependency.name == spec.name
end
@@ -72,16 +89,17 @@ class Gem::Resolver::Conflict
end
##
- # Path of specifications that requested this dependency
- def request_path
- current = requester
- path = []
while current do
- path << current.spec.full_name
- current = current.request.requester
end
path = ['user request (gem command or Gemfile)'] if path.empty?
@@ -98,5 +116,8 @@ class Gem::Resolver::Conflict
end
-Gem::Resolver::DependencyConflict = Gem::Resolver::Conflict