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
name
which 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 |