On Mar 17, 2006, at 5:49 PM, PJ Hyett wrote:

> So I've tracked this down:
>  __FILE__ is the name of the current source file
> $0 at the top level is the name of the top-level program being  
> executed
>
> But I'm still confused as to what this if statement is accomplishing?
> It's obviously useful for something since it's used quite often. Does
> this pertain to when a script is called from another script?
>
> Thanks,
> PJ

It is used when you want to run something when the file is executed  
directly. Some put tests in their code like this, I think this is bad  
form. Tests belong in a separate file.

File a.rb
---------
class Foo
end

if __FILE__ == $PROGRAM_NAME # [1]
   puts "Testing out class Foo"
   # ...
end

File b.rb
---------
require 'a'
puts "The if block in a.rb is not executed"

__END__

$ruby a.rb
Testing out class Foo
$ruby b.rb
The if block in a.rb is not executed

[1] $PROGRAM_NAME is the less cryptic name for $0

-- Daniel