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
| 17 18 19 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 | # File 'lib/inspec/library_eval_context.rb', line 17 def self.create(registry, require_loader) c = Class.new(Inspec::Resource) do 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 include Inspec::Resources 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 |