Converts block to a Proc object
(and therefore binds it at the point of call) and registers it for
execution when the program exits. If multiple handlers are registered, they
are executed in reverse order of registration.
/*
* call-seq:
* at_exit { block } -> proc
*
* Converts _block_ to a +Proc+ object (and therefore
* binds it at the point of call) and registers it for execution when
* the program exits. If multiple handlers are registered, they are
* executed in reverse order of registration.
*
* def do_at_exit(str1)
* at_exit { print str1 }
* end
* at_exit { puts "cruel world" }
* do_at_exit("goodbye ")
* exit
*
* <em>produces:</em>
*
* goodbye cruel world
*/
static VALUE
rb_f_at_exit()
{
VALUE proc;
if (!rb_block_given_p()) {
rb_raise(rb_eArgError, "called without a block");
}
proc = rb_block_proc();
rb_set_end_proc(call_end_proc, proc);
return proc;
}
1Note
at_exit in sintra
samsam ยท Mar 28, 2010
in main.rb of sinatra:
at_exit { Application.run! if $!.nil? && Application.run? }