Exception: Gem::Molinillo::VersionConflict
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: 
          self,
           ResolverError,
          StandardError | |
| Instance Chain: 
          self,
           Delegates::SpecificationProvider,ResolverError,
          StandardError | |
| Inherits: | Gem::Molinillo::ResolverError 
 | 
| Defined in: | lib/rubygems/vendor/molinillo/lib/molinillo/errors.rb | 
Overview
An error caused by conflicts in version
Class Method Summary
- 
    
      .new(conflicts, specification_provider)  ⇒ VersionConflict 
    
    constructor
    Initializes a new error with the given version conflicts. 
Instance Attribute Summary
Instance Method Summary
Delegates::SpecificationProvider - Included
| #allow_missing? | Returns whether this dependency, which has no possible matching specifications, can safely be ignored. | 
| #dependencies_equal? | Determines whether two arrays of dependencies are equal, and thus can be grouped. | 
| #dependencies_for | Returns the dependencies of  | 
| #name_for | Returns the name for the given  | 
| #name_for_explicit_dependency_source, #name_for_locking_dependency_source, | |
| #requirement_satisfied_by? | Determines whether the given  | 
| #search_for | Search for the specifications that match the given dependency. | 
| #sort_dependencies | Sort dependencies so that the ones that are easiest to resolve are first. | 
| #with_no_such_dependency_error_handling | Ensures any raised  | 
Constructor Details
    .new(conflicts, specification_provider)  ⇒ VersionConflict 
  
Initializes a new error with the given version conflicts.
# File 'lib/rubygems/vendor/molinillo/lib/molinillo/errors.rb', line 66
def initialize(conflicts, specification_provider) pairs = [] conflicts.values.flat_map(&:requirements).each do |conflicting| conflicting.each do |source, conflict_requirements| conflict_requirements.each do |c| pairs << [c, source] end end end super "Unable to satisfy the following requirements:\n\n" \ "#{pairs.map { |r, d| "- `#{r}` required by `#{d}`" }.join("\n")}" @conflicts = conflicts @specification_provider = specification_provider end
Instance Attribute Details
    #conflicts  ⇒ {String => Resolution::Conflict}  (readonly)
  
# File 'lib/rubygems/vendor/molinillo/lib/molinillo/errors.rb', line 57
attr_reader :conflicts
#specification_provider ⇒ SpecificationProvider (readonly)
# File 'lib/rubygems/vendor/molinillo/lib/molinillo/errors.rb', line 61
attr_reader :specification_provider
Instance Method Details
    #message_with_trees(opts = {})  ⇒ String 
  
# File 'lib/rubygems/vendor/molinillo/lib/molinillo/errors.rb', line 97
def (opts = {}) solver_name = opts.delete(:solver_name) { self.class.name.split('::').first } possibility_type = opts.delete(:possibility_type) { 'possibility named' } reduce_trees = opts.delete(:reduce_trees) { proc { |trees| trees.uniq.sort_by(&:to_s) } } printable_requirement = opts.delete(:printable_requirement) { proc { |req| req.to_s } } = opts.delete(:) { proc {} } version_for_spec = opts.delete(:version_for_spec) { proc(&:to_s) } = opts.delete(:) do proc do |name, _conflict| %(#{solver_name} could not find compatible versions for #{possibility_type} "#{name}":) end end = opts.delete(:) do proc do |name, conflict| o = "\n".dup << .call(name, conflict) << "\n" if conflict.locked_requirement o << %( In snapshot (#{name_for_locking_dependency_source}):\n) o << %( #{printable_requirement.call(conflict.locked_requirement)}\n) o << %(\n) end o << %( In #{name_for_explicit_dependency_source}:\n) trees = reduce_trees.call(conflict.requirement_trees) o << trees.map do |tree| t = ''.dup depth = 2 tree.each do |req| t << ' ' * depth << printable_requirement.call(req) unless tree.last == req if spec = conflict.activated_by_name[name_for(req)] t << %( was resolved to #{version_for_spec.call(spec)}, which) end t << %( depends on) end t << %(\n) depth += 1 end t end.join("\n") .call(o, name, conflict) o end end conflicts.sort.reduce(''.dup) do |o, (name, conflict)| o << .call(name, conflict) end.strip end