加载后显示ruby文件的完整路径名
在阅读源代码时,我总是想知道文件加载时的完整路径,ruby中是否有任何回调方法来完成此操作,还是以其他任何方式执行此操作? 提前致谢。
编辑澄清评论:
我想知道在执行这一行时加载的“somefile”所在的位置:“load somefile”
我能想到的最好的方法是修补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
我们使用alias_method
存储原始的load
方法,我们在最后调用它们。
在Ruby中显示文件的路径名
如何简单(来自露营的快速测试):
File.expand_path(File.dirname(__FILE__))
?
戈登威尔逊的答案很棒,只是想通过查看变量$“的输出(返回一个绝对文件名数组)来添加你还可以看到加载了哪些库(以及它们的完整路径!)
例如,最近加载的库的路径位于数组的末尾
我很好奇你为什么要使用load
而不是require
– 在我所有的时间里使用Ruby。 我从来没有机会利用load
。
要获取文件的完整路径,必须按以下方式组装字符串(其中yourfileobject是Ruby的File类的对象)。
File.expand_path(File.dirname(yourfileobject)) + "/" + yourfileobject.path