在阅读源代码时,我总是想知道文件加载时的完整路径,ruby中是否有任何回调方法来完成此操作,还是以其他任何方式执行此操作?提前致谢.
编辑澄清评论:
我想知道在执行这一行时加载的"somefile"所在的位置:"load somefile"
Dav*_*itt 16
如何简单(来自露营的快速测试):
File.expand_path(File.dirname(__FILE__))
Run Code Online (Sandbox Code Playgroud)
?
Gor*_*son 10
我能想到的最好方法是修补Kernel模块.根据文档 Kernel::load搜索$:文件名.如果我们找到它,我们可以做同样的事情并打印路径.
module Kernel
def load_and_print(string)
$:.each do |p|
if File.exists? File.join(p, string)
puts File.join(p, string)
break
end
end
load_original(string)
end
alias_method :load_original, :load
alias_method :load, :load_and_print
end
Run Code Online (Sandbox Code Playgroud)
我们alias_method用来存储原始load方法,我们称之为最终方法.