5

你如何检查一个 Ruby 文件是通过“require”或“load”导入的,而不是简单地从命令行执行的?

例如:

foo.rb 的内容:

puts "Hello"

bar.rb 的内容

require 'foo'

输出:

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

基本上,我想调用 bar.rb 来不执行 puts 调用。

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 回答
0

为了更好的可读性,您还可以使用 $PROGRAM_NAME

  if __FILE__ == $PROGRAM_NAME
      puts "Executed via CLI #{__FILE__}"
    else
      puts 'Referred'
    end

更多信息:__FILE__ == $PROGRAM_NAME 在 ruby​​ 中是什么意思?

于 2021-09-16T03:38:13.247 回答