class Inspec::Backend

def self.add_resource_methods # TODO: remove

TODO: remove
def self.add_resource_methods # TODO: remove
  Inspec::Resource.registry.each do |id, r|
    define_method id.to_sym do |*args|
      r.new(self, id.to_s, *args)
    end
  end
end

def self.create(config) # rubocop:disable Metrics/AbcSize

Returns:
  • (TransportBackend) - enriched transport instance

Parameters:
  • config (Inspec::Config) -- for the transport backend
def self.create(config) # rubocop:disable Metrics/AbcSize
  train_credentials = config.unpack_train_credentials
  transport_name = Train.validate_backend(train_credentials)
  transport = Train.create(transport_name, train_credentials)
  if transport.nil?
    raise "Can't find transport backend '#{transport_name}'."
  end
  connection = transport.connection
  if connection.nil?
    raise "Can't connect to transport backend '#{transport_name}'."
  end
  # Set caching settings. We always want to enable caching for
  # the Mock transport for testing.
  if config[:backend_cache] || config[:backend] == :mock
    Inspec::Log.debug "Option backend_cache is enabled"
    connection.enable_cache(:file)
    connection.enable_cache(:command)
  elsif config[:debug_shell]
    Inspec::Log.debug "Option backend_cache is disabled"
    connection.disable_cache(:file)
    connection.disable_cache(:command)
  else
    Inspec::Log.debug "Option backend_cache is disabled"
    connection.disable_cache(:file)
    connection.disable_cache(:command)
  end
  Inspec::Backend.new(connection)
rescue Train::ClientError => e
  raise "Client error, can't connect to '#{transport_name}' backend: #{e.message}"
rescue Train::TransportError => e
  raise "Transport error, can't connect to '#{transport_name}' backend: #{e.message}"
end

def initialize(backend)

def initialize(backend)
  self.backend = backend
  self.class.add_resource_methods
end

def inspect

Ruby internal for pretty-printing a summary for this class
def inspect
  "Inspec::Backend::Class @transport=#{backend.class}"
end

def local_transport?

the Ruby stdlib for a better experience.
Useful for resources to modify behavior as necessary, such as using
Determine whether the connection/transport is a local connection
def local_transport?
  return false unless defined?(Train::Transports::Local)
  backend.is_a?(Train::Transports::Local::Connection)
end

def method_missing(id, *args, &blk)

def method_missing(id, *args, &blk)
  Inspec::DSL.method_missing_resource(self, id, *args)
rescue LoadError
  super
end

def to_s

Ruby internal for printing a nice name for this class
def to_s
  "Inspec::Backend::Class"
end

def version

Returns:
  • (String) - inspec version
def version
  Inspec::VERSION
end