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:
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 |