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.



The dependencies of the gem for this specification


The name of the gem for this specification


The platform this gem works on.


The set this specification came from.


The source for this specification


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.


The version of the gem for this specification.

Public Class Methods

new() click to toggle source

Sets default instance variables for the specification.

# File rubygems/resolver/specification.rb, line 50
def initialize
  @dependencies = nil
  @name         = nil
  @platform     = nil
  @set          = nil
  @source       = nil
  @version      = nil

Public Instance Methods

download(options) click to toggle source
# File rubygems/resolver/specification.rb, line 96
def download(options)
  dir = options[:install_dir] || Gem.dir

  Gem.ensure_gem_subdirectories dir spec, dir
full_name() click to toggle source

The name and version of the specification.

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

# File rubygems/resolver/specification.rb, line 71
def full_name
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 rubygems/resolver/specification.rb, line 84
def install(options = {})
  require 'rubygems/installer'

  gem = download options

  installer = gem, options

  yield installer if block_given?

  @spec = installer.install
installable_platform?() click to toggle source

Returns true if this specification is installable on this platform.

# File rubygems/resolver/specification.rb, line 107
def installable_platform?
  Gem::Platform.match spec.platform