Class: Inspec::Plugin::V2::Installer::InstalledVendorSet
- Inherits:
-
Gem::Resolver::Set
- Object
- Gem::Resolver::Set
- Inspec::Plugin::V2::Installer::InstalledVendorSet
- Defined in:
- lib/inspec/plugin/v2/installer.rb
Overview
This class allows us to build a Resolver set with the gems that are already included either with Ruby or with the InSpec install
This code is heavily based on: github.com/hashicorp/vagrant/blob/32237377/lib/vagrant/bundler.rb#L400 github.com/hashicorp/vagrant/blob/32237377/lib/vagrant/bundler.rb#L565
Instance Method Summary collapse
- #find_all(req) ⇒ Object
-
#initialize ⇒ InstalledVendorSet
constructor
A new instance of InstalledVendorSet.
Constructor Details
#initialize ⇒ InstalledVendorSet
Returns a new instance of InstalledVendorSet.
415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 |
# File 'lib/inspec/plugin/v2/installer.rb', line 415 def initialize super @remote = false @specs = [] # Grab any pre loaded gems Gem::Specification.find_all do |spec| @specs << spec end # find all gem specification directories directories = [Gem::Specification.default_specifications_dir] unless defined?(::Bundler) # add in any others that do not start with the user directory directories += Gem::Specification.dirs.find_all do |path| !path.start_with?(Gem.user_dir) end end # add them all to the specs array Gem::Specification.each_spec(directories) do |spec| @specs << spec end # resolver expects one of each spec so uniq here. @specs.uniq! end |
Instance Method Details
#find_all(req) ⇒ Object
443 444 445 446 447 |
# File 'lib/inspec/plugin/v2/installer.rb', line 443 def find_all(req) @specs.select { |spec| req.match?(spec) }.map do |spec| Gem::Resolver::InstalledSpecification.new(self, spec) end end |