Class: Inspec::Resource

Inherits:
Object
  • Object
show all
Defined in:
lib/inspec/resource.rb

Class Method Summary collapse

Class Method Details

.create_dsl(profile_context) ⇒ ResourcesDSL

Creates the inner DSL which includes all resources for creating tests. It is always connected to one target, which is specified via the backend argument.

Parameters:

  • backend (BackendRunner)

    exposing the target to resources

Returns:

  • (ResourcesDSL)


30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/inspec/resource.rb', line 30

def self.create_dsl(profile_context)
  backend = profile_context.backend
  my_registry = profile_context.resource_registry

  Module.new do
    define_method :resource_class do |profile_name, resource_name|
      inner_context = if profile_name == profile_context.profile_id
                        profile_context
                      else
                        profile_context.subcontext_by_name(profile_name)
                      end

      raise ProfileNotFound, "Cannot find profile named: #{profile_name}" if inner_context.nil?
      inner_context.resource_registry[resource_name]
    end

    my_registry.each do |id, r|
      define_method id.to_sym do |*args|
        r.new(backend, id.to_s, *args)
      end
    end
  end
end

.default_registryObject



12
13
14
# File 'lib/inspec/resource.rb', line 12

def self.default_registry
  @default_registry ||= {}
end

.new_registryObject



20
21
22
# File 'lib/inspec/resource.rb', line 20

def self.new_registry
  default_registry.dup
end

.registryObject



16
17
18
# File 'lib/inspec/resource.rb', line 16

def self.registry
  @registry ||= default_registry
end