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.



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

#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

#required_ruby_versionObject (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_versionObject (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

#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



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

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



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

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.



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.

Yields:

  • (installer)


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

def install(options = {})
  require_relative "../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)


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

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

#local?Boolean

:nodoc:

Returns:

  • (Boolean)


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

def local? # :nodoc:
  false
end