有沒有一種很好的推薦方法來獲取調用方法的文件的名稱?我不想每次都通過__FILE__
。我發現的最接近的東西是Kernel.caller
的第一個元素,這沒關係,但附加了主叫號碼"test.rb:7"
。這很容易剝離,但使用它似乎是可能依賴於解釋器或將來可能會改變的東西。如何找到在Ruby中調用方法的文件的名稱?
0
A
回答
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其中有人做了類似於你建議的東西...
相關問題
- 1. 如何在方法名稱爲動態時在Ruby中調用方法?
- 2. 如何在文件中查找javascript方法名稱?
- 3. 如何找到在運行時調用Ruby方法的位置?
- 4. 如何在Ruby中找到方法
- 5. 如何找到不在註釋中的方法名稱?
- 6. 如何在Java中使用該方法查找方法名稱?
- 7. 如何查找調用方法C的完整名稱#
- 8. 有沒有辦法找出導致在ruby中調用另一個方法的方法的名稱?
- 9. 如何調用在.properties文件中設置名稱的java方法
- 10. 在Java中查找調用方法和類的名稱
- 11. 在類構造函數中找出調用的方法名稱?
- 12. 如何使用名稱調用方法?
- 13. 在J2ME中,如何通過名稱調用/調用方法?
- 14. 如何用Ruby中的方法名稱重載運算符?
- 15. 用ruby解析javap的方法名稱
- 16. 如何在excel文件中找到列的名稱
- 17. 如何在目錄中找到子文件夾的名稱
- 18. 如何在兩個* .txt文件中找到相同的名稱?
- 19. 如何在文件中找到包含「空格」的名稱?
- 20. 在Groovy中查找方法的名稱
- 21. 找到最終在一串方法調用中工作的類的名稱
- 22. 如何調用名稱存儲在字符串中的方法?
- 23. 如何在PHP中獲取調用函數/方法的名稱?
- 24. 如何獲取調用方法名稱?
- 25. 如何獲取調用方法名稱?
- 26. 如何按名稱調用方法?
- 27. 從html文件中調用ruby方法
- 28. 如何獲取調用者的文件名,方法名稱以python
- 29. 如何調用super.super方法在Ruby中
- 30. 如何在Ruby中調用方法?
四年後,這種行爲仍然沒有改變,所以是的,也許你可以指望它:http://ruby-doc.org/core-2.2.2/Kernel.html#method-i-caller – ohspite