Class: Gem::Resolver::Conflict
- Inherits:
-
Object
- Object
- Gem::Resolver::Conflict
- Defined in:
- lib/rubygems/resolver/conflict.rb
Overview
Used internally to indicate that a dependency conflicted with a spec that would be activated.
Instance Attribute Summary collapse
-
#activated ⇒ Object
readonly
The specification that was activated prior to the conflict.
-
#dependency ⇒ Object
readonly
The dependency that is in conflict with the activated gem.
-
#failed_dep ⇒ Object
readonly
:nodoc:.
Instance Method Summary collapse
-
#==(other) ⇒ Object
:nodoc:.
-
#conflicting_dependencies ⇒ Object
Return the 2 dependency objects that conflicted.
-
#explain ⇒ Object
A string explanation of the conflict.
-
#explanation ⇒ Object
Explanation of the conflict used by exceptions to print useful messages.
-
#for_spec?(spec) ⇒ Boolean
Returns true if the conflicting dependency’s name matches
spec
. -
#initialize(dependency, activated, failed_dep = dependency) ⇒ Conflict
constructor
Creates a new resolver conflict when
dependency
is in conflict with an alreadyactivated
specification. -
#pretty_print(q) ⇒ Object
:nodoc:.
-
#request_path(current) ⇒ Object
Path of activations from the
current
list. -
#requester ⇒ Object
Return the Specification that listed the dependency.
Constructor Details
#initialize(dependency, activated, failed_dep = dependency) ⇒ Conflict
Creates a new resolver conflict when dependency
is in conflict with an already activated
specification.
23 24 25 26 27 |
# File 'lib/rubygems/resolver/conflict.rb', line 23 def initialize(dependency, activated, failed_dep=dependency) @dependency = dependency @activated = activated @failed_dep = failed_dep end |
Instance Attribute Details
#activated ⇒ Object (readonly)
The specification that was activated prior to the conflict
10 11 12 |
# File 'lib/rubygems/resolver/conflict.rb', line 10 def activated @activated end |
#dependency ⇒ Object (readonly)
The dependency that is in conflict with the activated gem.
15 16 17 |
# File 'lib/rubygems/resolver/conflict.rb', line 15 def dependency @dependency end |
#failed_dep ⇒ Object (readonly)
:nodoc:
17 18 19 |
# File 'lib/rubygems/resolver/conflict.rb', line 17 def failed_dep @failed_dep end |
Instance Method Details
#==(other) ⇒ Object
:nodoc:
29 30 31 32 33 34 |
# File 'lib/rubygems/resolver/conflict.rb', line 29 def == other # :nodoc: self.class === other and @dependency == other.dependency and @activated == other.activated and @failed_dep == other.failed_dep end |
#conflicting_dependencies ⇒ Object
Return the 2 dependency objects that conflicted
46 47 48 |
# File 'lib/rubygems/resolver/conflict.rb', line 46 def conflicting_dependencies [@failed_dep.dependency, @activated.request.dependency] end |
#explain ⇒ Object
A string explanation of the conflict.
39 40 41 |
# File 'lib/rubygems/resolver/conflict.rb', line 39 def explain "<Conflict wanted: #{@failed_dep}, had: #{activated.spec.full_name}>" end |
#explanation ⇒ Object
Explanation of the conflict used by exceptions to print useful messages
53 54 55 56 57 58 59 60 61 |
# File 'lib/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(', '), ] end |
#for_spec?(spec) ⇒ Boolean
Returns true if the conflicting dependency’s name matches spec
.
66 67 68 |
# File 'lib/rubygems/resolver/conflict.rb', line 66 def for_spec?(spec) @dependency.name == spec.name end |
#pretty_print(q) ⇒ Object
:nodoc:
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/rubygems/resolver/conflict.rb', line 70 def pretty_print q # :nodoc: q.group 2, '[Dependency conflict: ', ']' do q.breakable q.text 'activated ' q.pp @activated q.breakable q.text ' dependency ' q.pp @dependency q.breakable if @dependency == @failed_dep then q.text ' failed' else q.text ' failed dependency ' q.pp @failed_dep end end end |
#request_path(current) ⇒ Object
Path of activations from the current
list.
94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/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 end path = ['user request (gem command or Gemfile)'] if path.empty? path end |
#requester ⇒ Object
Return the Specification that listed the dependency
112 113 114 |
# File 'lib/rubygems/resolver/conflict.rb', line 112 def requester @failed_dep.requester end |