ライブラリだと実行しないコードを書く

if $0 == __FILE__
  # コードを書く
end

Rubyリファレンスマニュアルによると、

現在実行中のRubyスクリプトの名前を表す文字列です。OSによってはこの変数に代入すると ps(1) の出力が変化します。この機能はプログラムの現在の状態を表示するのに便利です。(覚え方: sh や ksh と同じ)

from http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%C1%C8%A4%DF%B9%FE%A4%DF%CA%D1%BF%F4;em=%240

  • __FILE__

現在のソースファイル名
from http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%C1%C8%A4%DF%B9%FE%A4%DF%CA%D1%BF%F4;em=%240

ということでrequireでライブラリとして呼び出された場合は、__FILE__の値が異なるので実行されないということらしいです。

リファレンスの$0、__FILE__の項にもっと詳しく書いてあった方がよいと思いました。

それから、$0は、$PROGRAM_NAMEでも良いらしい。

とはいえ1.8からなので、ライブラリとかを考慮するとあまり使わないほうが良いのかも。(つまり$0を覚える…BK