Class: Inspec::LibraryEvalContext
- Inherits:
-
Object
- Object
- Inspec::LibraryEvalContext
- Defined in:
- lib/inspec/library_eval_context.rb
Overview
LibaryEvalContext constructs an instance of an anonymous class that library files will be instance_exec’d against.
The anonymous class ensures that ‘Inspec.resource(1)` will return an anonymouse class that is suitable as the parent class of an inspec resource. The class returned will have the resource registry used by all dsl methods bound to the resource registry passed into the #create constructor.
Class Method Summary collapse
Class Method Details
.create(registry, require_loader) ⇒ Object
20 21 22 23 24 25 26 27 28 29 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 |
# File 'lib/inspec/library_eval_context.rb', line 20 def self.create(registry, require_loader) c = Class.new do extend Inspec::ResourceDSL include Inspec::ResourceBehaviors define_singleton_method :__resource_registry do registry end end c2 = Class.new do define_singleton_method :resource do |version| Inspec.validate_resource_dsl_version!(version) c end end c3 = Class.new do include Inspec::DSL::RequireOverride def initialize(require_loader) @require_loader = require_loader @inspec_binding = nil end def __inspec_binding @inspec_binding end end c3.const_set(:Inspec, c2) res = c3.new(require_loader) # Provide the local binding for this context which is necessary for # calls to `require` to create all dependent objects in the correct # context. res.instance_variable_set('@inspec_binding', res.instance_eval('binding')) res end |