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.


50
51
52
53
54
55
56
57
# File 'lib/rubygems/resolver/specification.rb', line 50

def initialize
  @dependencies = nil
  @name         = nil
  @platform     = nil
  @set          = nil
  @source       = nil
  @version      = nil
end

Instance Attribute Details

#dependenciesObject (readonly)

The dependencies of the gem for this specification


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

def dependencies
  @dependencies
end

#nameObject (readonly)

The name of the gem for this specification


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

def name
  @name
end

#platformObject (readonly)

The platform this gem works on.


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

def platform
  @platform
end

#setObject (readonly)

The set this specification came from.


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

def set
  @set
end

#sourceObject (readonly)

The source for this specification


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

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.


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

def spec
  @spec
end

#versionObject (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


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

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


63
64
# File 'lib/rubygems/resolver/specification.rb', line 63

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.


71
72
73
# File 'lib/rubygems/resolver/specification.rb', line 71

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)

84
85
86
87
88
89
90
91
92
93
94
# File 'lib/rubygems/resolver/specification.rb', line 84

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)

107
108
109
# File 'lib/rubygems/resolver/specification.rb', line 107

def installable_platform?
  Gem::Platform.match spec.platform
end

#local?Boolean

:nodoc:

Returns:

  • (Boolean)

111
112
113
# File 'lib/rubygems/resolver/specification.rb', line 111

def local? # :nodoc:
  false
end