对措辞不佳的问题表示歉意 - 不知道如何把它变得更好!我在ruby bar.rb
执行bar.rb
而不是foo.rb
?从包含的文件中,如何获取包含文件的文件名?
在foo.rb
:
module Foo
def filename
__FILE__
end
end
在bar.rb
:
require_relative 'foo'
include Foo
puts filename # outputs 'foo.rb'
。这是一个库函数,每次执行一些代码时间,记录的位置(和git REF)该代码的。
这是完全黑客,但['caller'](http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i- caller)方法可以让你一些那里的路。 'def filename; file = caller [0] .split(':'); [0]的文件; end'。 – Telemachus
哈:)如果这是唯一的解决方案,我不会感到惊讶。 – seb
它可能是,但它*仍然*感到哈克地狱。不得不以这种方式解析输出只是犯规。 'caller'返回一个字符串数组,每个字符串的第一部分就是你想要的。根据你在做什么,你可能需要考虑堆栈中你想看的地方。也就是说,您可能并不总是需要数组中的第一个条目。 – Telemachus