class Gem::Resolver::Specification

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.

Attributes

dependencies[R]

The dependencies of the gem for this specification

name[R]

The name of the gem for this specification

platform[R]

The platform this gem works on.

required_ruby_version[R]

The required_ruby_version constraint for this specification.

required_rubygems_version[R]

The required_ruby_version constraint for this specification.

set[R]

The set this specification came from.

source[R]

The source for this specification

spec[R]

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.

version[R]

The version of the gem for this specification.

Public Class Methods

new() click to toggle source

Sets default instance variables for the specification.

# 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

Public Instance Methods

download(options) click to toggle source
# 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
full_name() click to toggle source

The name and version of the specification.

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

# File lib/rubygems/resolver/specification.rb, line 82
def full_name
  "#{@name}-#{@version}"
end
install(options = {}) { |installer| ... } click to toggle source

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 lib/rubygems/resolver/specification.rb, line 95
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?() click to toggle source

Returns true if this specification is installable on this platform.

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