5

Rubyファイルがコマンドラインから単に実行されたのではなく、「require」または「load」を介してインポートされたかどうかを確認するにはどうすればよいですか?

例えば:

foo.rb の内容:

puts "Hello"

bar.rb の内容

require 'foo'

出力:

$ ./foo.rb
Hello
$ ./bar.rb
Hello

基本的には、 puts 呼び出しを実行しないように bar.rb を呼び出したいと思います。

4

3 に答える 3

5
if __FILE__ != $0       #if the file is not the main script which is running
  quit                  #then quit
end

これを foo.rb のすべてのコードの上に置きます

于 2012-04-26T13:17:54.383 に答える
5

foo.rb を次のように変更します。

if __FILE__ == $0
  puts "Hello"
end

これ__FILE__は、現在の ruby​​ ファイル$0の名前と、実行中のスクリプトの名前を照合します。

于 2012-04-26T13:18:36.227 に答える