對措辭不佳的問題表示歉意 - 不知道如何把它變得更好!我在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