A GitSet
represents gems that are sourced from git repositories.
This is used for gem dependency file support.
Example:
set = Gem::Resolver::GitSet.new set.add_git_gem 'rake', 'git://example/rake.git', tag: 'rake-10.1.0'
The root directory for git gems in this set. This is usually Gem.dir
, the installation directory for regular gems.
Finds all git gems matching req
# File ruby-3.1.2/lib/rubygems/resolver/git_set.rb, line 79 def find_all(req) prefetch nil specs.values.select do |spec| req.match? spec end end
Prefetches specifications from the git repositories in this set.
# File ruby-3.1.2/lib/rubygems/resolver/git_set.rb, line 90 def prefetch(reqs) return unless @specs.empty? @repositories.each do |name, (repository, reference)| source = Gem::Source::Git.new name, repository, reference source.root_dir = @root_dir source.remote = @remote source.specs.each do |spec| git_spec = Gem::Resolver::GitSpecification.new self, spec, source @specs[spec.name] = git_spec end end end