Class: Gem::Resolver::VendorSet
- Defined in:
 - lib/rubygems/resolver/vendor_set.rb
 
Overview
A VendorSet represents gems that have been unpacked into a specific directory that contains a gemspec.
This is used for gem dependency file support.
Example:
set = Gem::Resolver::VendorSet.new
set.add_vendor_gem 'rake', 'vendor/rake'
The directory vendor/rake must contain an unpacked rake gem along with a rake.gemspec (watching the given name).
Instance Attribute Summary collapse
- 
  
    
      #specs  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
The specifications for this set.
 
Attributes inherited from Set
Instance Method Summary collapse
- 
  
    
      #add_vendor_gem(name, directory)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Adds a specification to the set with the given
namewhich has been unpacked into the givendirectory. - 
  
    
      #find_all(req)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Returns an Array of VendorSpecification objects matching the DependencyRequest
req. - 
  
    
      #initialize  ⇒ VendorSet 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
:nodoc:.
 - 
  
    
      #load_spec(name, version, platform, source)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Loads a spec with the given
name. - 
  
    
      #pretty_print(q)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
:nodoc:.
 
Methods inherited from Set
Constructor Details
#initialize ⇒ VendorSet
:nodoc:
      23 24 25 26 27 28  | 
    
      # File 'lib/rubygems/resolver/vendor_set.rb', line 23 def initialize # :nodoc: super() @directories = {} @specs = {} end  | 
  
Instance Attribute Details
#specs ⇒ Object (readonly)
The specifications for this set.
      21 22 23  | 
    
      # File 'lib/rubygems/resolver/vendor_set.rb', line 21 def specs @specs end  | 
  
Instance Method Details
#add_vendor_gem(name, directory) ⇒ Object
Adds a specification to the set with the given name which has been unpacked into the given directory.
      34 35 36 37 38 39 40 41 42 43 44 45 46 47 48  | 
    
      # File 'lib/rubygems/resolver/vendor_set.rb', line 34 def add_vendor_gem(name, directory) # :nodoc: gemspec = File.join directory, "#{name}.gemspec" spec = Gem::Specification.load gemspec raise Gem::GemNotFoundException, "unable to find #{gemspec} for gem #{name}" unless spec spec.full_gem_path = File. directory @specs[spec.name] = spec @directories[spec] = directory spec end  | 
  
#find_all(req) ⇒ Object
Returns an Array of VendorSpecification objects matching the DependencyRequest req.
      54 55 56 57 58 59 60 61  | 
    
      # File 'lib/rubygems/resolver/vendor_set.rb', line 54 def find_all(req) @specs.values.select do |spec| req.match? spec end.map do |spec| source = Gem::Source::Vendor.new @directories[spec] Gem::Resolver::VendorSpecification.new self, spec, source end end  | 
  
#load_spec(name, version, platform, source) ⇒ Object
Loads a spec with the given name. version, platform and source are ignored.
      67 68 69  | 
    
      # File 'lib/rubygems/resolver/vendor_set.rb', line 67 def load_spec(name, version, platform, source) # :nodoc: @specs.fetch name end  | 
  
#pretty_print(q) ⇒ Object
:nodoc:
      71 72 73 74 75 76 77 78 79 80 81 82 83 84  | 
    
      # File 'lib/rubygems/resolver/vendor_set.rb', line 71 def pretty_print(q) # :nodoc: q.group 2, "[VendorSet", "]" do next if @directories.empty? q.breakable dirs = @directories.map do |spec, directory| "#{spec.full_name}: #{directory}" end q.seplist dirs do |dir| q.text dir end end end  |