你如何检查一个 Ruby 文件是通过“require”或“load”导入的,而不是简单地从命令行执行的?
例如:
foo.rb 的内容:
puts "Hello"
bar.rb 的内容
require 'foo'
输出:
$ ./foo.rb
Hello
$ ./bar.rb
Hello
基本上,我想调用 bar.rb 来不执行 puts 调用。
你如何检查一个 Ruby 文件是通过“require”或“load”导入的,而不是简单地从命令行执行的?
例如:
foo.rb 的内容:
puts "Hello"
bar.rb 的内容
require 'foo'
输出:
$ ./foo.rb
Hello
$ ./bar.rb
Hello
基本上,我想调用 bar.rb 来不执行 puts 调用。
if __FILE__ != $0 #if the file is not the main script which is running
quit #then quit
end
把它放在 foo.rb 中的所有代码之上
将 foo.rb 更改为:
if __FILE__ == $0
puts "Hello"
end
这将检查__FILE__
- 当前 ruby 文件的名称 - 与$0
- 正在运行的脚本的名称。
为了更好的可读性,您还可以使用 $PROGRAM_NAME
if __FILE__ == $PROGRAM_NAME
puts "Executed via CLI #{__FILE__}"
else
puts 'Referred'
end