runtime/at_exit_handlers_parens.rb

tests/_examples/runtime/at_exit_handlers_parens.rb in the metorex repository.

begin
  at_exit
rescue ArgumentError => error
  puts(error.message)
end

puts(Kernel.private_instance_methods.include?(:at_exit))

at_exit { puts("registered first") }
at_exit do
  puts("outer")
  at_exit { puts("nested") }
  puts("outer done")
end
at_exit { puts("registered last") }

puts("main body")

Output:

called without a block
true
main body
registered last
outer
outer done
nested
registered first