file_loader/own_top_level_locals.rb

tests/_examples/file_loader/own_top_level_locals.rb in the metorex repository.

# A file loaded from another one keeps its own top-level locals, so a name it
# binds there never shows up in the file that loaded it. Constants, methods,
# and classes are shared.
require_relative "own_top_level_locals_lib"

p(LOADED_CONSTANT)
p(loaded_method)

begin
  p(loaded_local)
rescue NameError => refused
  p(refused.message)
end

p(binding.local_variables.sort)

Output:

"shared"
"shared method"
"undefined local variable or method 'loaded_local' for main"
[:refused]