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.
66 67 68 69 |
# File 'lib/inspec/backend.rb', line 66 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
97 98 99 100 101 |
# 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 |
Instance Attribute Details
#backend ⇒ Object
Returns the value of attribute backend.
11 12 13 |
# File 'lib/inspec/backend.rb', line 11 def backend @backend end |
#profile ⇒ Object
Returns the value of attribute profile.
12 13 14 |
# File 'lib/inspec/backend.rb', line 12 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.
18 19 20 21 22 23 24 |
# 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) ⇒ TransportBackend
Create the transport backend with aggregated resources.
30 31 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 |
# 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.}" rescue Train::TransportError => e raise "Transport error, can't connect to '#{transport_name}' backend: #{e.}" end |
Instance Method Details
#inspect ⇒ Object
Ruby internal for pretty-printing a summary for this class
93 94 95 |
# File 'lib/inspec/backend.rb', line 93 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.
81 82 83 84 85 |
# 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 |
#to_s ⇒ Object
Ruby internal for printing a nice name for this class
88 89 90 |
# File 'lib/inspec/backend.rb', line 88 def to_s "Inspec::Backend::Class" end |