Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ruby中找到调用方法的文件名?_Ruby_Stack Trace - Fatal编程技术网

如何在Ruby中找到调用方法的文件名?

如何在Ruby中找到调用方法的文件名?,ruby,stack-trace,Ruby,Stack Trace,有没有一种好的、推荐的方法来获取调用方法的文件名?我不想每次都通过\uuuuuuuu文件。我找到的最接近的东西是使用Kernel.caller的第一个元素,这是可以的,但是添加了调用行号,如“test.rb:7”。剥离它很容易,但使用它似乎取决于解释器,或者将来可能会发生变化。也许比你想象的更安全?我在另一篇文章中发现,有人做了一些类似于您建议的事情…在Ruby 2.0+中,您可以使用。它与调用者非常相似,还有一个好处,即您不需要手动解析文件名,因为它返回的是对象而不是字符串s: file1.r

有没有一种好的、推荐的方法来获取调用方法的文件名?我不想每次都通过
\uuuuuuuu文件
。我找到的最接近的东西是使用
Kernel.caller
的第一个元素,这是可以的,但是添加了调用行号,如
“test.rb:7”
。剥离它很容易,但使用它似乎取决于解释器,或者将来可能会发生变化。

也许比你想象的更安全?我在另一篇文章中发现,有人做了一些类似于您建议的事情…

在Ruby 2.0+中,您可以使用。它与
调用者
非常相似,还有一个好处,即您不需要手动解析文件名,因为它返回的是对象而不是
字符串
s:

file1.rb

def some_method
  puts caller_locations.first.path
end
require_relative './file1'

some_method
file2.rb

def some_method
  puts caller_locations.first.path
end
require_relative './file1'

some_method
外壳:

$ ruby file2.rb
file2.rb

四年后,这种行为仍然没有改变,所以是的,也许你可以相信: