加载后显示ruby文件的完整路径名

时间:2009-01-19 02:35:28

标签: ruby

在阅读源代码时,我总是想知道文件加载时的完整路径,ruby中是否有任何回调方法来完成此操作,还是以其他任何方式执行此操作?提前谢谢。

编辑从评论中澄清:

我想知道在执行此行时加载的“somefile”所在的位置:“load somefile”

5 个答案:

答案 0 :(得分:16)

在Ruby

中显示文件的路径名

如何简单(来自Camping中的快速测试):

File.expand_path(File.dirname(__FILE__))

答案 1 :(得分:10)

我能想到的最好方法是修补Kernel模块。根据{{​​3}} 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方法,我们会在最后一个方法中调用它。

答案 2 :(得分:3)

Gordon Wilson的答案很棒,只是想补充一点,你也可以通过查看变量$“的输出来看到加载了哪些库(以及它们的完整路径!)(返回绝对文件名数组)

e.g。最近加载的库的路径位于数组的末尾

答案 3 :(得分:0)

我很好奇为什么你使用load代替require - 在我使用Ruby的所有时间里。我从来没有机会利用load

答案 4 :(得分:0)

要获取文件的完整路径,必须按以下方式组装字符串(其中 yourfileobject 是Ruby的File类的对象)。

File.expand_path(File.dirname(yourfileobject)) + "/" + yourfileobject.path