threads/reloading_a_required_file.rb

tests/_examples/threads/reloading_a_required_file.rb in the metorex repository.

# A file taken back out of the list of what has been loaded is loaded again,
# which is how one file can define a second thing under a second name.
require "tmpdir"

path = File.join Dir.tmpdir, "metorex_reload_#{Process.pid}.rb"
File.write path, "$counted = ($counted || 0) + 1\n"

require path
puts $counted

require path
puts $counted

puts $LOADED_FEATURES.include?(path)
$LOADED_FEATURES.delete path
puts $LOADED_FEATURES.include?(path)

require path
puts $counted

File.unlink path

Output:

1
1
true
false
2