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
namewhich has been unpacked into the givendirectory. -
#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.
888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 |
# File 'lib/vagrant/bundler.rb', line 888 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.
909 910 911 912 913 914 915 916 |
# File 'lib/vagrant/bundler.rb', line 909 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.
921 922 923 924 |
# File 'lib/vagrant/bundler.rb', line 921 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 |