Module: Inspec::Backend
- Defined in:
- lib/inspec/backend.rb
Defined Under Namespace
Modules: Base
Class Method Summary collapse
-
.create(config) ⇒ TransportBackend
Create the transport backend with aggregated resources.
Class Method Details
.create(config) ⇒ TransportBackend
Create the transport backend with aggregated resources.
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 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/inspec/backend.rb', line 43 def self.create(config) # rubocop:disable Metrics/AbcSize conf = Train.target_config(config) name = Train.validate_backend(conf) transport = Train.create(name, conf) if transport.nil? raise "Can't find transport backend '#{name}'." end connection = transport.connection if connection.nil? raise "Can't connect to transport backend '#{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 cls = Class.new do include Base define_method :backend do connection end Inspec::Resource.registry.each do |id, r| define_method id.to_sym do |*args| r.new(self, id.to_s, *args) end end end cls.new rescue Train::ClientError => e raise "Client error, can't connect to '#{name}' backend: #{e.}" rescue Train::TransportError => e raise "Transport error, can't connect to '#{name}' backend: #{e.}" end |