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?
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?
Yes; if __FILE__ (the name of the current file) is the same as $0 (the
file where execution started), then you're in the startup file.
You'll often see this used in, say, a library file that usually gets
loaded from another file (so __FILE__ == $0 is false), but can also be
run standalone for the sake of running tests.
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
···
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
---------
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
Most definitely. I would like to see this changed in existing code.
Being a long time Ruby user, I always used $0 until
recently, Then I read some code by a new ruby user (whom I introduced to ruby).
I never bothered to see if an alternative to $0 existed.
You can learn from anyone. Even the nubies.
Jim Freeze
···
On Mar 17, 2006, at 10:58 AM, Daniel Harple wrote:
if __FILE__ == $PROGRAM_NAME # [1]
[1] $PROGRAM_NAME is the less cryptic name for $0
On 3/17/06, Jim Freeze <jimfreeze@gmail.com> wrote:
On Mar 17, 2006, at 10:58 AM, Daniel Harple wrote:
> if __FILE__ == $PROGRAM_NAME # [1]
> [1] $PROGRAM_NAME is the less cryptic name for $0
>
Most definitely. I would like to see this changed in existing code.
Being a long time Ruby user, I always used $0 until
recently, Then I read some code by a new ruby user (whom I introduced
to ruby).
I never bothered to see if an alternative to $0 existed.