Skip to Content Skip to Search

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.

Methods
D
F
I
N

Attributes

[R] dependencies

The dependencies of the gem for this specification

[R] name

The name of the gem for this specification

[R] platform

The platform this gem works on.

[R] required_ruby_version

The required_ruby_version constraint for this specification.

[R] required_rubygems_version

The required_ruby_version constraint for this specification.

[R] set

The set this specification came from.

[R] source

The source for this specification

[R] spec

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.

[R] version

The version of the gem for this specification.

Class Public methods

new()

Sets default instance variables for the specification.

# File ruby/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 Public methods

download(options)

# File ruby/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

full_name()

The name and version of the specification.

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

# File ruby/lib/rubygems/resolver/specification.rb, line 83
def full_name
  "#{@name}-#{@version}"
end

install(options = {})

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.

# File ruby/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?()

Returns true if this specification is installable on this platform.

# File ruby/lib/rubygems/resolver/specification.rb, line 119
def installable_platform?
  Gem::Platform.match_spec? spec
end