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