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.
414 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 |
# File 'lib/inspec/plugin/v2/installer.rb', line 414 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] if !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
442 443 444 445 446 |
# File 'lib/inspec/plugin/v2/installer.rb', line 442 def find_all(req) @specs.select { |spec| req.match?(spec) }.map do |spec| Gem::Resolver::InstalledSpecification.new(self, spec) end end |