説明
以下のように書きます。
if $0 == __FILE__ then # プログラムがコマンドで実行された場合 else # プログラムが require で読み込まれた場合 end
$0 は Kernel モジュールが定義する定数で、現在実行中の Ruby スクリプトの名前を表す文字列です。
詳細は「Kernel モジュール」のリファレンスを参照してください。
__FILE__ は Ruby の標準の疑似変数で、現在のソースファイル名です。リファレンスの「変数と定数」を参照してください。
現在実行中の Ruby スクリプトと現在のソースファイル名が一致によって、コマンドで実行されたものであると判断します。
応用
本コードとテストコードを1つのソースコードにセットで書く
このイディオムを使うことで、本コードとテストコードとを1つのソースファイルにまとめて書けます。
例えば以下のように書きます。
# 本コード class Foo # ... end if $0 == __FILE__ then require 'minitest/autorun' class TestFoo < MiniTest::Unit::TestCase # テストコード ... end end
- 直接このファイルを実行した場合、テストコードが動く。
- require で読み込んだ場合、テストコードは無視される。
コメント
本ページの内容に関して何かコメントがある方は、以下に記入してください。
コメントはありません。 コメント/idiom/judge_run_or_require