代码之家  ›  专栏  ›  技术社区  ›  Jonathan Marzullo

给定一条路径,如何在Ruby中确定其绝对/相对路径?

  •  12
  • Jonathan Marzullo  · 技术社区  · 15 年前

    CI server .

    我希望我的脚本逻辑如下:

    1. 如果路径被确定为相对路径,则通过使 输出路径=FOO\u HOME+用户提供的相对路径

    我正在使用 但它在windows上不能正常工作。

    5 回复  |  直到 9 年前
        1
  •  30
  •   evanmeng    15 年前
    require 'pathname'
    (Pathname.new "/foo").absolute? # => true
    (Pathname.new "foo").absolute? # => false
    
        2
  •  8
  •   EmFi    15 年前

    你要找的方法是 realpath.

    基本上你是这样做的:

    absolute_path = Pathname.new(path).realpath
    

    注意:Pathname模块指出,在没有类似unix的路径名的机器上使用是实验性的。所以它依赖于实现。看起来JRuby应该可以在Windows上运行。

        3
  •  5
  •   hagello    9 年前

    有一个内置函数,它涵盖了这两种情况,并完全满足您的要求:

    output_path = File.absolute_path(user_supplied_path, FOO_HOME)
    

    诀窍是提供第二个论点。当(且仅当)第一个参数是相对路径时,它将服务器作为基目录。

        4
  •  1
  •   johannes    15 年前

    Pathname 我能为你做这些

    require "pathname"
    home= Pathname.new("/home/foo")
    
    home + Pathname.new("/bin") # => #<Pathname:/bin>
    home + Pathname.new("documents") # => #<Pathname:/home/foo/documents>
    

    不过,我对windows上的这一点不太确定。

        5
  •  1
  •   BaroqueBobcat    15 年前

    File.expand_path 如果相对目录相对于当前工作目录。

    FOO_HOME 是工作目录,代码为:

    output_path = File.expand_path user_supplied_relative_path