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.
The required_ruby_version
constraint for this specification.
The required_ruby_version
constraint for this specification.
# File tmp/rubies/ruby-3.1.3/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
Sets default instance variables for the specification.
# File tmp/rubies/ruby-3.1.3/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
# File tmp/rubies/ruby-3.1.3/lib/rubygems/resolver/specification.rb, line 82
def full_name
"#{@name}-#{@version}"
end
The name and version of the specification.
Unlike Gem::Specification#full_name
, the platform is not included.
# File tmp/rubies/ruby-3.1.3/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
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 tmp/rubies/ruby-3.1.3/lib/rubygems/resolver/specification.rb, line 118
def installable_platform?
Gem::Platform.match_spec? spec
end
Returns true if this specification is installable on this platform.