Class: Inspec::Backend
- Inherits:
-
Object
- Object
- Inspec::Backend
- Defined in:
- lib/inspec/backend.rb
Instance Attribute Summary collapse
-
#backend ⇒ Object
Returns the value of attribute backend.
-
#profile ⇒ Object
Returns the value of attribute profile.
Class Method Summary collapse
-
.add_resource_methods ⇒ Object
Creates a bunch of predefined resource methods based on the current registry at the time.
-
.create(config) ⇒ TransportBackend
Create the transport backend with aggregated resources.
Instance Method Summary collapse
-
#initialize(backend) ⇒ Backend
constructor
A new instance of Backend.
-
#inspect ⇒ Object
Ruby internal for pretty-printing a summary for this class.
-
#local_transport? ⇒ Boolean
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.
- #method_missing(id, *args, &blk) ⇒ Object
-
#to_s ⇒ Object
Ruby internal for printing a nice name for this class.
-
#version ⇒ String
Provide a shorthand to retrieve the inspec version from within a profile.
Constructor Details
#initialize(backend) ⇒ Backend
Returns a new instance of Backend.
70 71 72 73 |
# File 'lib/inspec/backend.rb', line 70 def initialize(backend) self.backend = backend self.class.add_resource_methods end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(id, *args, &blk) ⇒ Object
101 102 103 104 105 |
# File 'lib/inspec/backend.rb', line 101 def method_missing(id, *args, &blk) Inspec::DSL.method_missing_resource(self, id, *args) rescue LoadError super end |
Instance Attribute Details
#backend ⇒ Object
Returns the value of attribute backend.
13 14 15 |
# File 'lib/inspec/backend.rb', line 13 def backend @backend end |
#profile ⇒ Object
Returns the value of attribute profile.
14 15 16 |
# File 'lib/inspec/backend.rb', line 14 def profile @profile end |
Class Method Details
.add_resource_methods ⇒ Object
Creates a bunch of predefined resource methods based on the current registry at the time. See #method_missing for what else can happen.
20 21 22 23 24 25 26 |
# File 'lib/inspec/backend.rb', line 20 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) ⇒ TransportBackend
Create the transport backend with aggregated resources.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/inspec/backend.rb', line 32 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.}" rescue Train::TransportError => e raise "Transport error, can't connect to '#{transport_name}' backend: #{e.}" rescue Errno::ENOENT => e raise "#{e.}" end |
Instance Method Details
#inspect ⇒ Object
Ruby internal for pretty-printing a summary for this class
97 98 99 |
# File 'lib/inspec/backend.rb', line 97 def inspect "Inspec::Backend::Class @transport=#{backend.class}" end |
#local_transport? ⇒ Boolean
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.
85 86 87 88 89 |
# File 'lib/inspec/backend.rb', line 85 def local_transport? return false unless defined?(Train::Transports::Local) backend.is_a?(Train::Transports::Local::Connection) end |
#to_s ⇒ Object
Ruby internal for printing a nice name for this class
92 93 94 |
# File 'lib/inspec/backend.rb', line 92 def to_s "Inspec::Backend::Class" end |