代码之家  ›  专栏  ›  技术社区  ›  eric2323223

加载Ruby文件时显示其完整路径名

  •  11
  • eric2323223  · 技术社区  · 16 年前

    在读取源代码时,我总是想知道文件加载时的完整路径,Ruby中是否有任何回调方法来完成此操作,或者其他方法来完成此操作?事先谢谢。

    编辑 评论澄清:

    我想知道加载的“somefile”在执行以下行时的位置:“加载somefile”

    5 回复  |  直到 10 年前
        1
  •  10
  •   Gordon Wilson    16 年前

    我能想到的最好办法是修补 Kernel 模块。根据 docs 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
  •  16
  •   Dave Everitt    10 年前

    在Ruby中显示文件的路径名

    简单点怎么样(从快速测试开始 Camping ):

    File.expand_path(File.dirname(__FILE__))
    

    ?

        3
  •  3
  •   Tilo    14 年前

    戈登·威尔逊的回答很好,只是想补充一下,你也可以看到 哪一个 已加载库(及其完整路径!),通过查看变量的输出$“(返回绝对文件名数组)

    例如,最近加载的库的路径位于数组的末尾

        4
  •  0
  •   community wiki ELLIOTTCABLE    16 年前

    我很好奇你为什么用 load 而不是 require -我一直在用Ruby。我从来没有机会利用 负载 .

        5
  •  0
  •   Joseph Combs    10 年前

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

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