Class: Gem::Resolver::APISpecification
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Specification
|
|
Instance Chain:
self,
Specification
|
|
Inherits: |
Gem::Resolver::Specification
|
Defined in: | lib/rubygems/resolver/api_specification.rb |
Overview
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.
Class Method Summary
-
.new(set, api_data) ⇒ APISpecification
constructor
Creates an
APISpecification
for the givenset
from the rubygems.orgapi_data
.
Specification
- Inherited
.new | Sets default instance variables for the specification. |
Instance Attribute Summary
- #installable_platform? ⇒ Boolean readonly Internal use only
Specification
- Inherited
#dependencies | The dependencies of the gem for this specification. |
#installable_platform? | Returns true if this specification is installable on this platform. |
#name | The name of the gem for this specification. |
#platform | The platform this gem works on. |
#set | The set this specification came from. |
#source | The source for this specification. |
#spec | The |
#version | The version of the gem for this specification. |
#local? |
Instance Method Summary
- #==(other) Internal use only
- #fetch_development_dependencies Internal use only
- #pretty_print(q) Internal use only
- #source Internal use only
-
#spec
Internal use only
Fetches a
::Gem::Specification
for thisAPISpecification
.
Specification
- Inherited
#download, | |
#full_name | The name and version of the specification. |
#install | Installs this specification using the |
#fetch_development_dependencies | Fetches development dependencies if the source does not provide them by default (see |
Constructor Details
.new(set, api_data) ⇒ APISpecification
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 'lib/rubygems/resolver/api_specification.rb', line 17
def initialize(set, api_data) super() @set = set @name = api_data[:name] @version = Gem::Version.new api_data[:number] @platform = Gem::Platform.new api_data[:platform] @original_platform = api_data[:platform] @dependencies = api_data[:dependencies].map do |name, ver| Gem::Dependency.new name, ver.split(/\s*,\s*/) end end
Instance Attribute Details
#installable_platform? ⇒ Boolean
(readonly)
Instance Method Details
#==(other)
# File 'lib/rubygems/resolver/api_specification.rb', line 30
def ==(other) # :nodoc: self.class === other and @set == other.set and @name == other.name and @version == other.version and @platform == other.platform and @dependencies == other.dependencies end
#fetch_development_dependencies
#pretty_print(q)
# File 'lib/rubygems/resolver/api_specification.rb', line 49
def pretty_print(q) # :nodoc: q.group 2, '[APISpecification', ']' do q.breakable q.text "name: #{name}" q.breakable q.text "version: #{version}" q.breakable q.text "platform: #{platform}" q.breakable q.text 'dependencies:' q.breakable q.pp @dependencies q.breakable q.text "set uri: #{@set.dep_uri}" end end
#source
# File 'lib/rubygems/resolver/api_specification.rb', line 86
def source # :nodoc: @set.source end
#spec
Fetches a ::Gem::Specification
for this APISpecification
.
# File 'lib/rubygems/resolver/api_specification.rb', line 73
def spec # :nodoc: @spec ||= begin tuple = Gem::NameTuple.new @name, @version, @platform source.fetch_spec tuple rescue Gem::RemoteFetcher::FetchError raise if @original_platform == @platform tuple = Gem::NameTuple.new @name, @version, @original_platform source.fetch_spec tuple end end