Module: Inspec::DSL::RequireOverride

Defined in:
lib/inspec/dsl_shared.rb

Instance Method Summary collapse

Instance Method Details

#__ruby_requireObject

Save the toplevel require method to load all ruby dependencies. It is used whenever the ‘require ’lib’‘ is not in libraries.



9
# File 'lib/inspec/dsl_shared.rb', line 9

alias __ruby_require require

#require(path) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/inspec/dsl_shared.rb', line 11

def require(path)
  rbpath = path + ".rb"
  return __ruby_require(path) unless @require_loader.exists?(rbpath)
  return false if @require_loader.loaded?(rbpath)

  # This is equivalent to calling `require 'lib'` with lib on disk.
  # We cannot rely on libraries residing on disk however.
  # TODO: Sandboxing.
  content, path, line = @require_loader.load(rbpath)

  # If we are in the realm of libraries and the LibraryEvalContext
  # we should have access to the __inspec_binding, which is a Binding
  # context that provides the correct plane to evaluate all required files to.
  # It will ensure that embedded calls to `require` still call this
  # method and get loaded from their correct paths.
  return __inspec_binding.eval(content, path, line) if defined?(__inspec_binding)

  eval(content, TOPLEVEL_BINDING, path, line) # rubocop:disable Security/Eval
end