Given a set of Gem::Dependency objects as
needed and a way to query the set of available specs via
set, calculates a set of ActivationRequest objects which
indicate all the specs that should be activated to meet the all the
If the DEBUG_RESOLVER environment variable is set then debugging mode is enabled for the resolver. This will display information about the state of the resolver while a set of dependencies is being resolved.
Contains all the conflicts encountered while doing resolution
Set to true if development dependencies should be considered.
When true, no dependencies are looked up for requested gems.
List of dependencies that could not be found in the configured sources.
When a missing dependency, don't stop. Just go on and record what was missing.
# File lib/rubygems/resolver.rb, line 57 def self.compose_sets *sets sets.compact! sets = sets.map do |set| case set when Gem::Resolver::BestSet then set when Gem::Resolver::ComposedSet then set.sets else set end end.flatten case sets.length when 0 then raise ArgumentError, 'one set in the composition must be non-nil' when 1 then sets.first else Gem::Resolver::ComposedSet.new(*sets) end end
Creates a Resolver that queries only against
the already installed gems for the
# File lib/rubygems/resolver.rb, line 85 def self.for_current_gems needed new needed, Gem::Resolver::CurrentSet.new end
Create Resolver object which will resolve the
tree starting with
needed Dependency objects.
set is an object that provides where to look for
specifications to satisfy the Dependencies. This defaults to IndexSet, which will query rubygems.org.
# File lib/rubygems/resolver.rb, line 97 def initialize needed, set = nil @set = set || Gem::Resolver::IndexSet.new @needed = needed @conflicts =  @development = false @ignore_dependencies = false @missing =  @soft_missing = false @stats = Gem::Resolver::Stats.new end
Proceed with resolution! Returns an array of ActivationRequest objects.
# File lib/rubygems/resolver.rb, line 161 def resolve @conflicts =  needed = Gem::Resolver::RequirementList.new @needed.reverse_each do |n| request = Gem::Resolver::DependencyRequest.new n, nil needed.add request @stats.requirement! end @stats.record_requirements needed res = resolve_for needed, nil raise Gem::DependencyResolutionError, res if res.kind_of? Gem::Resolver::Conflict res.to_a end