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 Gem::Specification for this Resolver::Specification.
Implementers, note that install updates @spec, so be sure to cache the Gem::Specification in @spec when overriding.
Sets default instance variables for the specification.
# File 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
# File 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
The name and version of the specification.
Unlike Gem::Specification#full_name, the platform is not included.
# File rubygems/resolver/specification.rb, line 82
def full_name
"#{@name}-#{@version}"
end
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 95
def install(options = {})
require 'rubygems/installer'
gem = download options
installer = Gem::Installer.at gem, options
yield installer if block_given?
@spec = installer.install
end