Class: Gem::Resolver::Specification
- Inherits:
-
Object
- Object
- Gem::Resolver::Specification
- Defined in:
- lib/rubygems/resolver/specification.rb
Overview
A Resolver::Specification contains a subset of the information contained in a Gem::Specification. Only the information necessary for dependency resolution in the resolver is included.
Direct Known Subclasses
APISpecification, IndexSpecification, LockSpecification, SpecSpecification
Instance Attribute Summary collapse
-
#dependencies ⇒ Object
readonly
The dependencies of the gem for this specification.
-
#name ⇒ Object
readonly
The name of the gem for this specification.
-
#platform ⇒ Object
readonly
The platform this gem works on.
-
#required_ruby_version ⇒ Object
readonly
The required_ruby_version constraint for this specification.
-
#required_rubygems_version ⇒ Object
readonly
The required_ruby_version constraint for this specification.
-
#set ⇒ Object
readonly
The set this specification came from.
-
#source ⇒ Object
readonly
The source for this specification.
-
#spec ⇒ Object
readonly
The Gem::Specification for this Resolver::Specification.
-
#version ⇒ Object
readonly
The version of the gem for this specification.
Instance Method Summary collapse
- #download(options) ⇒ Object
-
#fetch_development_dependencies ⇒ Object
Fetches development dependencies if the source does not provide them by default (see APISpecification).
-
#full_name ⇒ Object
The name and version of the specification.
-
#initialize ⇒ Specification
constructor
Sets default instance variables for the specification.
-
#install(options = {}) {|installer| ... } ⇒ Object
Installs this specification using the Gem::Installer
options
. -
#installable_platform? ⇒ Boolean
Returns true if this specification is installable on this platform.
-
#local? ⇒ Boolean
:nodoc:.
Constructor Details
#initialize ⇒ Specification
Sets default instance variables for the specification.
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/rubygems/resolver/specification.rb', line 60 def initialize @dependencies = nil @name = nil @platform = nil @set = nil @source = nil @version = nil @required_ruby_version = Gem::Requirement.default @required_rubygems_version = Gem::Requirement.default end |
Instance Attribute Details
#dependencies ⇒ Object (readonly)
The dependencies of the gem for this specification
12 13 14 |
# File 'lib/rubygems/resolver/specification.rb', line 12 def dependencies @dependencies end |
#name ⇒ Object (readonly)
The name of the gem for this specification
17 18 19 |
# File 'lib/rubygems/resolver/specification.rb', line 17 def name @name end |
#platform ⇒ Object (readonly)
The platform this gem works on.
22 23 24 |
# File 'lib/rubygems/resolver/specification.rb', line 22 def platform @platform end |
#required_ruby_version ⇒ Object (readonly)
The required_ruby_version constraint for this specification.
50 51 52 |
# File 'lib/rubygems/resolver/specification.rb', line 50 def required_ruby_version @required_ruby_version end |
#required_rubygems_version ⇒ Object (readonly)
The required_ruby_version constraint for this specification.
55 56 57 |
# File 'lib/rubygems/resolver/specification.rb', line 55 def required_rubygems_version @required_rubygems_version end |
#set ⇒ Object (readonly)
The set this specification came from.
27 28 29 |
# File 'lib/rubygems/resolver/specification.rb', line 27 def set @set end |
#source ⇒ Object (readonly)
The source for this specification
32 33 34 |
# File 'lib/rubygems/resolver/specification.rb', line 32 def source @source end |
#spec ⇒ Object (readonly)
The Gem::Specification for this Resolver::Specification.
Implementers, note that #install updates @spec, so be sure to cache the Gem::Specification in @spec when overriding.
40 41 42 |
# File 'lib/rubygems/resolver/specification.rb', line 40 def spec @spec end |
#version ⇒ Object (readonly)
The version of the gem for this specification.
45 46 47 |
# File 'lib/rubygems/resolver/specification.rb', line 45 def version @version end |
Instance Method Details
#download(options) ⇒ Object
108 109 110 111 112 113 114 |
# File 'lib/rubygems/resolver/specification.rb', line 108 def download() dir = [:install_dir] || Gem.dir Gem.ensure_gem_subdirectories dir source.download spec, dir end |
#fetch_development_dependencies ⇒ Object
Fetches development dependencies if the source does not provide them by default (see APISpecification).
75 76 |
# File 'lib/rubygems/resolver/specification.rb', line 75 def fetch_development_dependencies # :nodoc: end |
#full_name ⇒ Object
The name and version of the specification.
Unlike Gem::Specification#full_name, the platform is not included.
83 84 85 |
# File 'lib/rubygems/resolver/specification.rb', line 83 def full_name "#{@name}-#{@version}" end |
#install(options = {}) {|installer| ... } ⇒ Object
Installs this specification using the Gem::Installer options
. The install method yields a Gem::Installer instance, which indicates the gem will be installed, or nil
, which indicates the gem is already installed.
After installation #spec is updated to point to the just-installed specification.
96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/rubygems/resolver/specification.rb', line 96 def install( = {}) require_relative "../installer" gem = download installer = Gem::Installer.at gem, yield installer if block_given? @spec = installer.install end |
#installable_platform? ⇒ Boolean
Returns true if this specification is installable on this platform.
119 120 121 |
# File 'lib/rubygems/resolver/specification.rb', line 119 def installable_platform? Gem::Platform.match_spec? spec end |
#local? ⇒ Boolean
:nodoc:
123 124 125 |
# File 'lib/rubygems/resolver/specification.rb', line 123 def local? # :nodoc: false end |