Class: Gem::Resolver::GitSet
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
| Class Chain: 
          self,
           Set | |
| Instance Chain: 
          self,
           Set | |
| Inherits: | Gem::Resolver::Set 
 | 
| Defined in: | lib/rubygems/resolver/git_set.rb | 
Overview
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'Class Method Summary
Instance Attribute Summary
- 
    
      #root_dir  
    
    rw
    The root directory for git gems in this set. 
- 
    
      #need_submodules  
    
    readonly
    Internal use only
    Contains repositories needing submodules. 
- 
    
      #repositories  
    
    readonly
    Internal use only
    A Hash containing git gem names for keys and a Hash of repository and git commit reference as values. 
- 
    
      #specs  
    
    readonly
    Internal use only
    A hash of gem names to Gem::Resolver::GitSpecifications
Set - Inherited
| #errors | Errors encountered when resolving gems. | 
| #prerelease | When true, allows matching of requests to prerelease gems. | 
| #remote | 
 | 
| #remote? | When true, this set is allowed to access the network when looking up specifications or dependencies. | 
Instance Method Summary
- 
    
      #find_all(req)  
    
    Finds all git gems matching req
- 
    
      #prefetch(reqs)  
    
    Prefetches specifications from the git repositories in this set. 
- #add_git_gem(name, repository, reference, submodules) Internal use only
- 
    
      #add_git_spec(name, version, repository, reference, submodules)  
    
    Internal use only
    Adds and returns a GitSpecificationwith the givennameandversionwhich came from arepositoryat the givenreference.
- #pretty_print(q) Internal use only
Set - Inherited
Constructor Details
    .new  ⇒ GitSet 
  
  Instance Attribute Details
#need_submodules (readonly)
Contains repositories needing submodules
# File 'lib/rubygems/resolver/git_set.rb', line 23
attr_reader :need_submodules # :nodoc:
#repositories (readonly)
A Hash containing git gem names for keys and a Hash of repository and git commit reference as values.
# File 'lib/rubygems/resolver/git_set.rb', line 29
attr_reader :repositories # :nodoc:
#root_dir (rw)
The root directory for git gems in this set. This is usually Gem.dir, the installation directory for regular gems.
# File 'lib/rubygems/resolver/git_set.rb', line 18
attr_accessor :root_dir
#specs (readonly)
A hash of gem names to Gem::Resolver::GitSpecifications
# File 'lib/rubygems/resolver/git_set.rb', line 34
attr_reader :specs # :nodoc:
Instance Method Details
#add_git_gem(name, repository, reference, submodules)
# File 'lib/rubygems/resolver/git_set.rb', line 45
def add_git_gem(name, repository, reference, submodules) # :nodoc: @repositories[name] = [repository, reference] @need_submodules[repository] = submodules end
#add_git_spec(name, version, repository, reference, submodules)
Adds and returns a GitSpecification with the given name and version which came from a repository at the given reference.  If submodules is true they are checked out along with the repository.
This fills in the prefetch information as enough information about the gem is present in the arguments.
# File 'lib/rubygems/resolver/git_set.rb', line 58
def add_git_spec(name, version, repository, reference, submodules) # :nodoc: add_git_gem name, repository, reference, submodules source = Gem::Source::Git.new name, repository, reference source.root_dir = @root_dir spec = Gem::Specification.new do |s| s.name = name s.version = version end git_spec = Gem::Resolver::GitSpecification.new self, spec, source @specs[spec.name] = git_spec git_spec end
#find_all(req)
Finds all git gems matching req
#prefetch(reqs)
Prefetches specifications from the git repositories in this set.
# File '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
#pretty_print(q)
# File 'lib/rubygems/resolver/git_set.rb', line 106
def pretty_print(q) # :nodoc: q.group 2, "[GitSet", "]" do next if @repositories.empty? q.breakable repos = @repositories.map do |name, (repository, reference)| "#{name}: #{repository}@#{reference}" end q.seplist repos do |repo| q.text repo end end end