class Gem::Resolver::Specification
Resolver::Specification 包含 Gem::Specification
中信息的一个子集。只包含解析器中依赖关系解析所必需的信息。
属性
此规范的 gem 的依赖关系
此规范的 gem 的名称
此 gem 适用的平台。
此规范来自的集合。
此规范的来源
此 Resolver::Specification 的 Gem::Specification
。
实现者请注意,install
会更新 @spec,因此在覆盖时请务必将 Gem::Specification
缓存在 @spec 中。
此规范的 gem 的版本。
公共类方法
源
# File lib/rubygems/resolver/specification.rb, line 60 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 lib/rubygems/resolver/specification.rb, line 108 def download(options) dir = options[:install_dir] || Gem.dir Gem.ensure_gem_subdirectories dir source.download spec, dir end
源
# File lib/rubygems/resolver/specification.rb, line 83 def full_name "#{@name}-#{@version}" end
规范的名称和版本。
与 Gem::Specification#full_name
不同,不包含平台。
源
# File lib/rubygems/resolver/specification.rb, line 96 def install(options = {}) require_relative "../installer" gem = download options installer = Gem::Installer.at gem, options yield installer if block_given? @spec = installer.install end
使用 Gem::Installer
options
安装此规范。install 方法会产生一个 Gem::Installer
实例,表示将要安装该 gem;或者产生 nil
,表示该 gem 已安装。
安装后,spec
会被更新以指向刚刚安装的规范。
源
# File lib/rubygems/resolver/specification.rb, line 119 def installable_platform? Gem::Platform.match_spec? spec end
如果此规范可在此平台上安装,则返回 true。