君の瞳はまるでルビー - Ruby 関連まとめサイト

コマンドで実行されたのか、require で読み込まれたのかの判断

最終更新: 2015-03-31 (火) 21:53:17 (1688d)

イディオム

説明

以下のように書きます。

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

お名前: