BEGIN and END
BEGIN
and END
are reserved words in Ruby that
declare code to be executed at the very beginning and very end of a Ruby
program. (Note that BEGIN
and
END
in capital letters are completely
different from begin
and end
in lowercase.) If there is more than one
BEGIN
statement in a program, they
are executed in the order in which the interpreter encounters them. If
there is more than one END
statement,
they are executed in the reverse of the order in which they are
encountered—that is, the first one is executed last. These statements
are not commonly used in Ruby. They are inherited from Perl, which in
turn inherited them from the awk text-processing language.
BEGIN
and END
must be followed by an open curly brace,
any amount of Ruby code, and a close curly brace. The curly braces are
required; do
and end
are not allowed here. For example:
BEGIN { # Global initialization code goes here } END { # Global shutdown code goes here }
The BEGIN
and END
statements are different from each other
in subtle ways. BEGIN
statements are
executed before anything else, including any surrounding code. This
means that they define a local variable scope that is completely
separate from the surrounding code. It only really makes sense to put
BEGIN
statements in top-level code; a
BEGIN
within a conditional or loop
will be executed without regard for the conditions that surround it.
Consider this code:
if (false) BEGIN { puts "if"; # This will be printed a = 4; # This variable only defined here } ...
Get The Ruby Programming Language now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.