class Vagrant::Bundler::VagrantSet
This is a custom Gem::Resolver::InstallerSet. It will prefer sources which are explicitly provided over default sources when matches are found. This is generally the entire set used for performing full resolutions on install.
Attributes
prefer_sources[RW]
system_plugins[RW]
Public Class Methods
new(domain, defined_sources={})
click to toggle source
Calls superclass method
# File lib/vagrant/bundler.rb, line 800 def initialize(domain, defined_sources={}) @prefer_sources = defined_sources @system_plugins = [] super(domain) end
Public Instance Methods
find_all(req)
click to toggle source
Allow InstallerSet to find matching specs, then filter for preferred sources
Calls superclass method
# File lib/vagrant/bundler.rb, line 808 def find_all(req) result = super if system_plugins.include?(req.name) result.delete_if do |spec| spec.is_a?(Gem::Resolver::InstalledSpecification) end end subset = result.find_all do |idx_spec| preferred = false if prefer_sources[req.name] if idx_spec.source.respond_to?(:path) preferred = prefer_sources[req.name].include?(idx_spec.source.path.to_s) end if !preferred preferred = prefer_sources[req.name].include?(idx_spec.source.uri.to_s) end end preferred end subset.empty? ? result : subset end