查找需要此文件的文件路径

时间:2015-02-17 03:22:24

标签: ruby

我将展示我正在尝试做的一个例子。

child.rb

require 'parent'
class Child < Parent
  ...
end

parent.rb

class Parent 
  puts __FILE__
  ...
end

运行此程序(例如在IRB中):

require 'child'
child=Child.new

返回:

/path/to/parent.rb

但我真的想要获取文件child.rb

如果不将puts __FILE__直接移到子类中,我怎么能这样做?

3 个答案:

答案 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].pathcaller