2011-08-19 34 views
0

有沒有一種很好的推薦方法來獲取調用方法的文件的名稱?我不想每次都通過__FILE__。我發現的最接近的東西是Kernel.caller的第一個元素,這沒關係,但附加了主叫號碼"test.rb:7"。這很容易剝離,但使用它似乎是可能依賴於解釋器或將來可能會改變的東西。如何找到在Ruby中調用方法的文件的名稱?

回答

1

在Ruby 2.0 +中,你可以使用Kernel#caller_locations來做到這一點。這是非常相似的caller,與你不需要手動解析出文件名的附加好處,因爲它返回Thread::Backtrace::Location對象,而不是String S:

file1.rb

def some_method 
    puts caller_locations.first.path 
end 

file2.rb

require_relative './file1' 

some_method 

殼牌:

$ ruby file2.rb 
file2.rb 
1

也許它比你想象的更安全?我發現這個其他帖子http://snippets.dzone.com/posts/show/2787其中有人做了類似於你建議的東西...

+0

四年後,這種行爲仍然沒有改變,所以是的,也許你可以指望它:http://ruby-doc.org/core-2.2.2/Kernel.html#method-i-caller – ohspite

相關問題