frozen_string_literal: false
Used internally to indicate that a dependency conflicted with a spec that would be activated.
Methods
Attributes
| [R] | activated | The specification that was activated prior to the conflict |
| [R] | dependency | The dependency that is in conflict with the activated gem. |
Class Public methods
new(dependency, activated, failed_dep=dependency)
Link
Creates a new resolver conflict when dependency is in conflict
with an already activated specification.
Instance Public methods
conflicting_dependencies()
Link
Return the 2 dependency objects that conflicted
explain()
Link
A string explanation of the conflict.
explanation()
Link
Explanation of the conflict used by exceptions to print useful messages
# 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 { |spec| spec.full_name } unless alternates.empty? then matching = " Gems matching %s: %s ".chomp matching = matching % [ dependency, alternates.join(', '), ] end explanation = <<-EXPLANATION Activated %s which does not match conflicting dependency (%s) Conflicting dependency chains: %s versus: %s %s EXPLANATION 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)
Link
Returns true if the conflicting dependency's name matches
spec.
request_path(current)
Link
Path of activations from the current list.
# File lib/rubygems/resolver/conflict.rb, line 124 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}" 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