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:
| 24 25 26 27 28 29 | # File 'lib/rubygems/resolver/vendor_set.rb', line 24 def initialize # :nodoc: super() @directories = {} @specs = {} end | 
Instance Attribute Details
#specs ⇒ Object (readonly)
The specifications for this set.
| 22 23 24 | # File 'lib/rubygems/resolver/vendor_set.rb', line 22 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.
| 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | # File 'lib/rubygems/resolver/vendor_set.rb', line 35 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.
| 55 56 57 58 59 60 61 62 | # File 'lib/rubygems/resolver/vendor_set.rb', line 55 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.
| 68 69 70 | # File 'lib/rubygems/resolver/vendor_set.rb', line 68 def load_spec(name, version, platform, source) # :nodoc: @specs.fetch name end | 
#pretty_print(q) ⇒ Object
:nodoc:
| 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | # File 'lib/rubygems/resolver/vendor_set.rb', line 72 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 |