srchulo
srchulo

Reputation: 5203

Run code only if script called from the command line

So when I call my script from the command line, I want it to take in an int and do something with the value:

ruby script.rb


puts ARGV[0], etc...

However, whenever the script is loaded or required and not called from command line, I want to completely skip this part of the code. How can I detect whether the script has been called via command line, or just loaded? Thanks!

Upvotes: 36

Views: 9323

Answers (1)

Phrogz
Phrogz

Reputation: 303206

It is common to put this at the bottom of your script:

if __FILE__==$0
  # this will only run if the script was the main, not load'd or require'd
end

Because I like to see the main action at the top of my file, I usually put a def run! as the first method in the file and then end the file with:

run! if __FILE__==$0

Upvotes: 73

Related Questions