Class: Gem::Resolver::APISpecification
- Inherits:
-
Specification
- Object
- Specification
- Gem::Resolver::APISpecification
- 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.
Instance Attribute Summary
Attributes inherited from Specification
#dependencies, #name, #platform, #set, #version
Instance Method Summary collapse
-
#==(other) ⇒ Object
:nodoc:.
-
#fetch_development_dependencies ⇒ Object
:nodoc:.
-
#initialize(set, api_data) ⇒ APISpecification
constructor
Creates an APISpecification for the given
set
from the rubygems.orgapi_data
. -
#installable_platform? ⇒ Boolean
:nodoc:.
-
#pretty_print(q) ⇒ Object
:nodoc:.
-
#source ⇒ Object
:nodoc:.
-
#spec ⇒ Object
Fetches a Gem::Specification for this APISpecification.
Methods inherited from Specification
#download, #full_name, #install, #local?
Constructor Details
#initialize(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
.
17 18 19 20 21 22 23 24 25 26 27 28 |
# 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 Method Details
#==(other) ⇒ Object
:nodoc:
30 31 32 33 34 35 36 37 |
# 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 ⇒ Object
:nodoc:
39 40 41 42 43 |
# File 'lib/rubygems/resolver/api_specification.rb', line 39 def fetch_development_dependencies # :nodoc: spec = source.fetch_spec Gem::NameTuple.new @name, @version, @platform @dependencies = spec.dependencies end |
#installable_platform? ⇒ Boolean
:nodoc:
45 46 47 |
# File 'lib/rubygems/resolver/api_specification.rb', line 45 def installable_platform? # :nodoc: Gem::Platform.match @platform end |
#pretty_print(q) ⇒ Object
:nodoc:
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# 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 ⇒ Object
:nodoc:
86 87 88 |
# File 'lib/rubygems/resolver/api_specification.rb', line 86 def source # :nodoc: @set.source end |
#spec ⇒ Object
Fetches a Gem::Specification for this APISpecification.
73 74 75 76 77 78 79 80 81 82 83 84 |
# 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 |