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 |