我将展示我正在尝试做的一个例子。
require 'parent'
class Child < Parent
...
end
class Parent
puts __FILE__
...
end
运行此程序(例如在IRB中):
require 'child'
child=Child.new
返回:
/path/to/parent.rb
但我真的想要获取文件child.rb
。
如果不将puts __FILE__
直接移到子类中,我怎么能这样做?
答案 0 :(得分:1)
Ruby无法满足您的要求。也许如果你解释了为什么你想要这个 - 你想要完成什么 - 那么我(或其他人)可以帮助你进一步。就目前而言,您似乎在问XY problem。
虽然并不总是需要我的#34;文件,但在这种情况下您可以使用$0
代替__FILE__
来获取&#34;根正在运行的文件&#34;在你完成ruby parent.rb
的情况下。但请注意,这不适用于IRB。 (IRB $0
内部总是&#34; irb&#34;或同样无益的东西。)
答案 1 :(得分:0)
在致电原始require
之前,重新定义caller_locations.first.absolute_path
以输出require
。
答案 2 :(得分:0)
您可以使用某些回溯方法,例如caller_locations(1,1)[0].path
或caller