class Gem::Resolver::APISet - Documentation for Ruby 3.2

# class Gem::Resolver::APISet

The global rubygems pool, available via the rubygems.org API. Returns instances of APISpecification.

### Attributes

source[R]

The `Gem::Source` that gems are fetched from

uri[R]

The corresponding place to fetch gems.

### Public Class Methods

new(dep_uri = "https://index.rubygems.org/info/") click to toggle source

Creates a new `APISet` that will retrieve gems from `uri` using the RubyGems API URL `dep_uri` which is described at guides.rubygems.org/rubygems-org-api

Calls superclass method `BasicObject::new`

    # File lib/rubygems/resolver/api_set.rb, line 30
    def initialize(dep_uri = "https://index.rubygems.org/info/")
      super()

      dep_uri = URI dep_uri unless URI === dep_uri

      @dep_uri = dep_uri
      @uri     = dep_uri + ".."

      @data   = Hash.new {|h,k| h[k] = [] }
      @source = Gem::Source.new @uri

      @to_fetch = []
    end

### Public Instance Methods

find_all(req) click to toggle source

Return an array of APISpecification objects matching DependencyRequest `req`.

    # File lib/rubygems/resolver/api_set.rb, line 48
    def find_all(req)
      res = []

      return res unless @remote

      if @to_fetch.include?(req.name)
        prefetch_now
      end

      versions(req.name).each do |ver|
        if req.dependency.match? req.name, ver[:number], @prerelease
          res << Gem::Resolver::APISpecification.new(self, ver)
        end
      end

      res
    end

prefetch(reqs) click to toggle source

A hint run by the resolver to allow the `Set` to fetch data for DependencyRequests `reqs`.

    # File lib/rubygems/resolver/api_set.rb, line 70
    def prefetch(reqs)
      return unless @remote
      names = reqs.map {|r| r.dependency.name }
      needed = names - @data.keys - @to_fetch

      @to_fetch += needed
    end

### Private Instance Methods

lines(str) click to toggle source

    # File lib/rubygems/resolver/api_set.rb, line 123
    def lines(str)
      lines = str.split("\n")
      header = lines.index("---")
      header ? lines[header + 1..-1] : lines
    end

parse_gem(string) click to toggle source

    # File lib/rubygems/resolver/api_set.rb, line 129
    def parse_gem(string)
      @gem_parser ||= GemParser.new
      @gem_parser.parse(string)
    end