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 |