如何在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
四年后,这种行为仍然没有改变,所以是的,也许你可以相信: