I wanted a way to treat a Ruby file as both an importable library or a script. The best solution I could find was as follows:

if __FILE__ == $0
   #script / run as self code goes here
end

If the file is called directly a la ruby ./library.rb, the code within that if block will be executed. If included, FILE, the file that this code exists in will not match $0, the file being executed and the code in that block will not be executed.

Example

library.rb

PHRASE = "Hello World"

def get_phrase
 PHRASE
end

if __FILE__ == $0
 puts "Executing library.rb"
 puts get_phrase
end

script.rb

require "library.rb"

puts "Executing script.rb"
puts get_phrase

Running ruby script.rb will produce:

Executing script.rb
Hello World

Running ruby library.rb will produce:

Executing library.rb
Hello World

It seems trivial but I’ve utilized this several times while creating large collections of scripts.