class Gem::Resolver::APISpecification
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
Source
# File lib/rubygems/resolver/api_specification.rb, line 14 def self.new(set, api_data) cache_key = [set, api_data] cache = @@cache[cache_key] return cache if cache @@cache[cache_key] = super end
Calls superclass method
Gem::Resolver::Specification::new
Source
# File lib/rubygems/resolver/api_specification.rb, line 28 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
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
.
Calls superclass method
Gem::Resolver::Specification::new
Public Instance Methods
Source
# File lib/rubygems/resolver/api_specification.rb, line 51 def hash @set.hash ^ @name.hash ^ @version.hash ^ @platform.hash end