Rubyスクリプトが直接実行されたか判定する
グローバル変数$0
には実行されたRubyスクリプトのファイル名が格納されている。さらに擬似変数__FILE__
には現在のソースファイル名が格納されている。
これら2つを比較することで、あるスクリプトがコマンドとして直接実行されたのか、別のファイルからライブラリとして読み込まれたのかを区別することができる。具体的には以下のコードである。
if $0 == __FILE__ # コマンドとして実行 else # ライブラリとして読み込み end
この仕組みを使えば、Rubyスクリプトをコマンドとライブラリの両用にすることができる。ライブラリとして他のファイルから読み込みたいが、直接コマンドとして実行もしたい、といった場合に便利である。