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 dependencyis in conflict with an alreadyactivatedspecification.
- 
  
    
      #pretty_print(q)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    :nodoc:. 
- 
  
    
      #request_path(current)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Path of activations from the currentlist.
- 
  
    
      #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.
| 24 25 26 27 28 | # File 'lib/rubygems/resolver/conflict.rb', line 24 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
| 11 12 13 | # File 'lib/rubygems/resolver/conflict.rb', line 11 def activated @activated end | 
#dependency ⇒ Object (readonly)
The dependency that is in conflict with the activated gem.
| 16 17 18 | # File 'lib/rubygems/resolver/conflict.rb', line 16 def dependency @dependency end | 
#failed_dep ⇒ Object (readonly)
:nodoc:
| 18 19 20 | # File 'lib/rubygems/resolver/conflict.rb', line 18 def failed_dep @failed_dep end | 
Instance Method Details
#==(other) ⇒ Object
:nodoc:
| 30 31 32 33 34 35 | # File 'lib/rubygems/resolver/conflict.rb', line 30 def ==(other) # :nodoc: self.class === other && @dependency == other.dependency && @activated == other.activated && @failed_dep == other.failed_dep end | 
#conflicting_dependencies ⇒ Object
Return the 2 dependency objects that conflicted
| 47 48 49 | # File 'lib/rubygems/resolver/conflict.rb', line 47 def conflicting_dependencies [@failed_dep.dependency, @activated.request.dependency] end | 
#explain ⇒ Object
A string explanation of the conflict.
| 40 41 42 | # File 'lib/rubygems/resolver/conflict.rb', line 40 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
| 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | # File 'lib/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(&:full_name) unless alternates.empty? matching = <<-MATCHING.chomp Gems matching %s: %s MATCHING matching = format(matching, dependency, alternates.join(", ")) end explanation = <<-EXPLANATION Activated %s which does not match conflicting dependency (%s) Conflicting dependency chains: %s versus: %s %s EXPLANATION format(explanation, activated, requirement, request_path(@activated).reverse.join(", depends on\n "), request_path(@failed_dep).reverse.join(", depends on\n "), matching) end | 
#for_spec?(spec) ⇒ Boolean
Returns true if the conflicting dependency’s name matches spec.
| 88 89 90 | # File 'lib/rubygems/resolver/conflict.rb', line 88 def for_spec?(spec) @dependency.name == spec.name end | 
#pretty_print(q) ⇒ Object
:nodoc:
| 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | # File 'lib/rubygems/resolver/conflict.rb', line 92 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 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.
| 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | # File 'lib/rubygems/resolver/conflict.rb', line 116 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.to_s 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 | 
#requester ⇒ Object
Return the Specification that listed the dependency
| 143 144 145 | # File 'lib/rubygems/resolver/conflict.rb', line 143 def requester @failed_dep.requester end |