class Inspec::Backend
Attributes
backend[RW]
profile[RW]
Public Class Methods
add_resource_methods()
click to toggle source
Creates a bunch of predefined resource methods based on the current registry at the time. See method_missing
for what else can happen.
# File lib/inspec/backend.rb, line 18 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
create(config)
click to toggle source
Create the transport backend with aggregated resources.
@param [Inspec::Config] config for the transport backend @return [TransportBackend] enriched transport instance
# File lib/inspec/backend.rb, line 30 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
new(backend)
click to toggle source
# File lib/inspec/backend.rb, line 66 def initialize(backend) self.backend = backend self.class.add_resource_methods end
Public Instance Methods
inspect()
click to toggle source
Ruby internal for pretty-printing a summary for this class
# File lib/inspec/backend.rb, line 93 def inspect "Inspec::Backend::Class @transport=#{backend.class}" end
local_transport?()
click to toggle source
Determine whether the connection/transport is a local connection Useful for resources to modify behavior as necessary, such as using the Ruby stdlib for a better experience.
# File lib/inspec/backend.rb, line 81 def local_transport? return false unless defined?(Train::Transports::Local) backend.is_a?(Train::Transports::Local::Connection) end
method_missing(id, *args, &blk)
click to toggle source
Calls superclass method
# File lib/inspec/backend.rb, line 97 def method_missing(id, *args, &blk) Inspec::DSL.method_missing_resource(self, id, *args) rescue LoadError super end
to_s()
click to toggle source
Ruby internal for printing a nice name for this class
# File lib/inspec/backend.rb, line 88 def to_s "Inspec::Backend::Class" end
version()
click to toggle source
Provide a shorthand to retrieve the inspec version from within a profile
@return [String] inspec version
# File lib/inspec/backend.rb, line 74 def version Inspec::VERSION end