Class: Gem::Resolver::Specification

Inherits:
Object
  • Object
show all
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.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeSpecification

Sets default instance variables for the specification.



59
60
61
62
63
64
65
66
67
68
# File 'lib/rubygems/resolver/specification.rb', line 59

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

#dependenciesObject (readonly)

The dependencies of the gem for this specification



11
12
13
# File 'lib/rubygems/resolver/specification.rb', line 11

def dependencies
  @dependencies
end

#nameObject (readonly)

The name of the gem for this specification



16
17
18
# File 'lib/rubygems/resolver/specification.rb', line 16

def name
  @name
end

#platformObject (readonly)

The platform this gem works on.



21
22
23
# File 'lib/rubygems/resolver/specification.rb', line 21

def platform
  @platform
end

#required_ruby_versionObject (readonly)

The required_ruby_version constraint for this specification.



49
50
51
# File 'lib/rubygems/resolver/specification.rb', line 49

def required_ruby_version
  @required_ruby_version
end

#required_rubygems_versionObject (readonly)

The required_ruby_version constraint for this specification.



54
55
56
# File 'lib/rubygems/resolver/specification.rb', line 54

def required_rubygems_version
  @required_rubygems_version
end

#setObject (readonly)

The set this specification came from.



26
27
28
# File 'lib/rubygems/resolver/specification.rb', line 26

def set
  @set
end

#sourceObject (readonly)

The source for this specification



31
32
33
# File 'lib/rubygems/resolver/specification.rb', line 31

def source
  @source
end

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



39
40
41
# File 'lib/rubygems/resolver/specification.rb', line 39

def spec
  @spec
end

#versionObject (readonly)

The version of the gem for this specification.



44
45
46
# File 'lib/rubygems/resolver/specification.rb', line 44

def version
  @version
end

Instance Method Details

#download(options) ⇒ Object



107
108
109
110
111
112
113
# File 'lib/rubygems/resolver/specification.rb', line 107

def download(options)
  dir = options[:install_dir] || Gem.dir

  Gem.ensure_gem_subdirectories dir

  source.download spec, dir
end

#fetch_development_dependenciesObject

Fetches development dependencies if the source does not provide them by default (see APISpecification).



74
75
# File 'lib/rubygems/resolver/specification.rb', line 74

def fetch_development_dependencies # :nodoc:
end

#full_nameObject

The name and version of the specification.

Unlike Gem::Specification#full_name, the platform is not included.



82
83
84
# File 'lib/rubygems/resolver/specification.rb', line 82

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.

Yields:

  • (installer)


95
96
97
98
99
100
101
102
103
104
105
# File 'lib/rubygems/resolver/specification.rb', line 95

def install(options = {})
  require 'rubygems/installer'

  gem = download options

  installer = Gem::Installer.at gem, options

  yield installer if block_given?

  @spec = installer.install
end

#installable_platform?Boolean

Returns true if this specification is installable on this platform.

Returns:

  • (Boolean)


118
119
120
# File 'lib/rubygems/resolver/specification.rb', line 118

def installable_platform?
  Gem::Platform.match_spec? spec
end

#local?Boolean

:nodoc:

Returns:

  • (Boolean)


122
123
124
# File 'lib/rubygems/resolver/specification.rb', line 122

def local? # :nodoc:
  false
end