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.
68 69 70 71 |
# File 'lib/inspec/backend.rb', line 68 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
99 100 101 102 103 |
# File 'lib/inspec/backend.rb', line 99 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 65 66 |
# 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.}" rescue Errno::ENOENT => e raise "#{e.}" end |
Instance Method Details
#inspect ⇒ Object
Ruby internal for pretty-printing a summary for this class
95 96 97 |
# File 'lib/inspec/backend.rb', line 95 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.
83 84 85 86 87 |
# File 'lib/inspec/backend.rb', line 83 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
90 91 92 |
# File 'lib/inspec/backend.rb', line 90 def to_s "Inspec::Backend::Class" end |