ライブラリだと実行しないコードを書く
if $0 == __FILE__ # コードを書く end
Rubyリファレンスマニュアルによると、
- $0
- $PROGRAM_NAME (ruby 1.8 feature)
現在実行中の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