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.

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 50
def initialize
  @dependencies = nil
  @name         = nil
  @platform     = nil
  @set          = nil
  @source       = nil
  @version      = nil
end

Public Instance Methods

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 71
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 84
def install options = {}
  require 'rubygems/installer'

  destination = options[:install_dir] || Gem.dir

  Gem.ensure_gem_subdirectories destination

  gem = source.download spec, destination

  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 103
def installable_platform?
  Gem::Platform.match spec.platform
end