In Files

  • rubygems/resolver/api_specification.rb

Class/Module Index [+]

Quicksearch

Gem::Resolver::APISpecification

frozen_string_literal: true

Represents a specification retrieved via the rubygems.org API.

This is used to avoid loading the full Specification object when all we need is the name, version, and dependencies.

Public Class Methods

new(set, api_data) click to toggle source
 
               # File rubygems/resolver/api_specification.rb, line 13
def self.new(set, api_data)
  cache_key = [set, api_data]
  cache = @@cache[cache_key]
  return cache if cache
  @@cache[cache_key] = super
end
            
new(set, api_data) click to toggle source

Creates an APISpecification for the given set from the rubygems.org api_data.

See guides.rubygems.org/rubygems-org-api/#misc_methods for the format of the api_data.

 
               # File rubygems/resolver/api_specification.rb, line 27
def initialize(set, api_data)
  super()

  @set = set
  @name = api_data[:name]
  @version = Gem::Version.new(api_data[:number]).freeze
  @platform = Gem::Platform.new(api_data[:platform]).freeze
  @original_platform = api_data[:platform].freeze
  @dependencies = api_data[:dependencies].map do |name, ver|
    Gem::Dependency.new(name, ver.split(/\s*,\s*/)).freeze
  end.freeze
  @required_ruby_version = Gem::Requirement.new(api_data.dig(:requirements, :ruby)).freeze
  @required_rubygems_version = Gem::Requirement.new(api_data.dig(:requirements, :rubygems)).freeze
end
            

Public Instance Methods

hash() click to toggle source
 
               # File rubygems/resolver/api_specification.rb, line 50
def hash
  @set.hash ^ @name.hash ^ @version.hash ^ @platform.hash
end