Class: Vagrant::Bundler::VagrantSet
- Inherits:
-
Gem::Resolver::InstallerSet
- Object
- Gem::Resolver::InstallerSet
- Vagrant::Bundler::VagrantSet
- Defined in:
- lib/vagrant/bundler.rb
Overview
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.
Instance Attribute Summary collapse
-
#prefer_sources ⇒ Object
Returns the value of attribute prefer_sources.
-
#system_plugins ⇒ Object
Returns the value of attribute system_plugins.
Instance Method Summary collapse
-
#find_all(req) ⇒ Object
Allow InstallerSet to find matching specs, then filter for preferred sources.
-
#initialize(domain, defined_sources = {}) ⇒ VagrantSet
constructor
A new instance of VagrantSet.
Constructor Details
#initialize(domain, defined_sources = {}) ⇒ VagrantSet
Returns a new instance of VagrantSet.
556 557 558 559 560 |
# File 'lib/vagrant/bundler.rb', line 556 def initialize(domain, defined_sources={}) @prefer_sources = defined_sources @system_plugins = [] super(domain) end |
Instance Attribute Details
#prefer_sources ⇒ Object
Returns the value of attribute prefer_sources.
553 554 555 |
# File 'lib/vagrant/bundler.rb', line 553 def prefer_sources @prefer_sources end |
#system_plugins ⇒ Object
Returns the value of attribute system_plugins.
554 555 556 |
# File 'lib/vagrant/bundler.rb', line 554 def system_plugins @system_plugins end |
Instance Method Details
#find_all(req) ⇒ Object
Allow InstallerSet to find matching specs, then filter for preferred sources
564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 |
# File 'lib/vagrant/bundler.rb', line 564 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 |