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/index_set.rb, line 7
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/index_set.rb, line 27
def find_all req
  res = []

  name = req.dependency.name

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

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

Called from IndexSpecification to get a true Specification object.

# File lib/rubygems/dependency_resolver/index_set.rb, line 46
def load_spec name, ver, platform, source
  key = "#{name}-#{ver}-#{platform}"

  @specs.fetch key do
    tuple = Gem::NameTuple.new name, ver, platform

    @specs[key] = source.fetch_spec tuple
  end
end
prefetch(gems) click to toggle source

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

# File lib/rubygems/dependency_resolver/index_set.rb, line 60
def prefetch gems
end