class Gem::DependencyResolver::IndexSet

The global rubygems pool represented via the traditional source index.

Public Class Methods

new() click to toggle source
# File lib/rubygems/dependency_resolver.rb, line 192
def initialize
  @f = Gem::SpecFetcher.fetcher

  @all = Hash.new { |h,k| h[k] = [] }

  list, _ = @f.available_specs(:released)
  list.each do |uri, specs|
    specs.each do |n|
      @all[n.name] << [uri, n]
    end
  end

  @specs = {}
end

Public Instance Methods

find_all(req) click to toggle source

Return an array of IndexSpecification objects matching DependencyRequest req.

# File lib/rubygems/dependency_resolver.rb, line 210
def find_all(req)
  res = []

  name = req.dependency.name

  @all[name].each do |uri, n|
    if req.dependency.match? n
      res << IndexSpecification.new(self, n.name, n.version,
                                    uri, n.platform)
    end
  end

  res
end
load_spec(name, ver, source) click to toggle source

Called from IndexSpecification to get a true Specification object.

# File lib/rubygems/dependency_resolver.rb, line 234
def load_spec(name, ver, source)
  key = "#{name}-#{ver}"
  @specs[key] ||= source.fetch_spec(Gem::NameTuple.new(name, ver))
end
prefetch(gems) click to toggle source

No prefetching needed since we load the whole index in initially.

# File lib/rubygems/dependency_resolver.rb, line 228
def prefetch(gems)
end