Class: Vagrant::Bundler::PluginSet
- Inherits:
-
Gem::Resolver::VendorSet
- Object
- Gem::Resolver::VendorSet
- Vagrant::Bundler::PluginSet
- Defined in:
- lib/vagrant/bundler.rb
Overview
This is a custom Gem::Resolver::Set for use with Vagrant plugins. It is a modified Gem::Resolver::VendorSet that supports multiple versions of a specific gem
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 given +directory+.
-
#find_all(req) ⇒ Object
Returns an Array of VendorSpecification objects matching the DependencyRequest +req+.
-
#load_spec(name, version, platform, source) ⇒ Object
Loads a spec with the given +name+.
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+.
876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 |
# File 'lib/vagrant/bundler.rb', line 876 def add_vendor_gem(name, directory) gemspec = File.join(directory, "#{name}.gemspec") spec = Gem::Specification.load(gemspec) if !spec raise Gem::GemNotFoundException, "unable to find #{gemspec} for gem #{name}" end spec.full_gem_path = File.(directory) spec.base_dir = File.dirname(spec.base_dir) @specs[spec.name] ||= [] @specs[spec.name] << spec @directories[spec] = directory spec end |
#find_all(req) ⇒ Object
Returns an Array of VendorSpecification objects matching the DependencyRequest +req+.
897 898 899 900 901 902 903 904 |
# File 'lib/vagrant/bundler.rb', line 897 def find_all(req) @specs.values.flatten.select do |spec| req.match?(spec, prerelease) 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.
909 910 911 912 |
# File 'lib/vagrant/bundler.rb', line 909 def load_spec(name, version, platform, source) version = Gem::Version.new(version) if !version.is_a?(Gem::Version) @specs.fetch(name, []).detect{|s| s.name == name && s.version == version} end |