class Inspec::Plugin::V2::Installer::InstalledVendorSet

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

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/inspec/plugin/v2/installer.rb, line 444
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

  spec_dir = if Gem.respond_to? :default_specifications_dir
               Gem.default_specifications_dir
             else
               Gem::Specification.default_specifications_dir
             end
  directories = [spec_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

Public Instance Methods

find_all(req) click to toggle source
# File lib/inspec/plugin/v2/installer.rb, line 478
def find_all(req)
  @specs.select { |spec| req.match?(spec) }.map do |spec|
    Gem::Resolver::InstalledSpecification.new(self, spec)
  end
end