ライブラリにサンプルを書くうまいやり方 その2
ruby添付のset.rbを眺めていて発見。
... ライブラリのソース if $0 == __FILE__ eval DATA.read, nil, $0, __LINE__+4 end __END__ ... ライブラリのサンプル(というかテストケースだけど。)
とすることで、ライブラリがrubyで直接実行された場合のみ__END__以降に書いておいたサンプル(というかテストケース)を実行するようにできます。
- 「if $0 == __FILE__」で、ライブラリがrubyで直接実行された場合を判断します。(詳細はライブラリにサンプルを書くうまいやり方を参照。)
- DATAは__END__以降のデータにアクセスするためのグローバル変数で、そこからテストケースを読み込んで実行します。
- 「$0」や「__LINE__+4」はevalの引数で、スタックトレースの表示などを差し替えるため指定してるっぽい。
ふむふむ。なるほどー、こういう使い方があるのか!