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.
# 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
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