Preview Ruby 4.1 is a preview. It can change before the final release. Switch to Ruby 4.0 →
class method
Gem::Resolver.new
new(needed, set = nil)
lib/rubygems/resolver.rb
View on GitHub ↗
# File tmp/rubies/ruby-4.1.0-preview1/lib/rubygems/resolver.rb, line 106
def initialize(needed, set = nil)
@set = set || Gem::Resolver::IndexSet.new
@needed = needed
@cooldown = nil
@development = false
@development_shallow = false
@ignore_dependencies = false
@skip_gems = {}
@soft_missing = false
@root_package = RootPackage.new
@root_version = Gem::PubGrub::Package.root_version
@packages = {}
@unfiltered_specs = Hash.new {|h, name| h[name] = find_unfiltered_specs_for(name) }
@all_specs = Hash.new {|h, name| h[name] = filter_specs(@unfiltered_specs[name]) }
@all_versions = Hash.new {|h, pkg| h[pkg] = @all_specs[pkg.to_s].map(&:version).uniq.sort }
@sorted_versions = Hash.new do |h, pkg|
h[pkg] = Gem::PubGrub::Package.root?(pkg) ? [@root_version] : @all_versions[pkg]
end
@cached_dependencies = Hash.new do |h, pkg|
h[pkg] = if Gem::PubGrub::Package.root?(pkg)
{ @root_version => root_dependencies }
else
Hash.new {|v, ver| v[ver] = compute_dependencies(pkg, ver) }
end
end
@version_to_index = Hash.new {|h, pkg| h[pkg] = @sorted_versions[pkg].each_with_index.to_h }
@versions_for_cache = Hash.new {|h, pkg| h[pkg] = {} }
@spec_for_cache = Hash.new {|h, name| h[name] = build_spec_for_cache(name) }
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.
See also
.for_current_gems
#all_versions_for
.compose_sets
#build_extended_explanation
also in
4.0 · 3.4 · 3.3 · 3.2 · 3.1 · 3.0