Ruby:如何计算相对于另一个的路径?

And*_*rew 39 ruby relative-path

假设我知道我开始的绝对路径以及我想要达到的绝对路径:

first = '/first/path'
second = '/second/path'
Run Code Online (Sandbox Code Playgroud)

现在我想弄清楚如何构造一个相对于第一个的路径.例如:

# answer should be /first/path/../../second/path
path = second.get_path_relative_to(first)
Run Code Online (Sandbox Code Playgroud)

我怎么能在Ruby中做这种事情?

Mat*_*ira 58

用途Pathname#relative_path_from:

require 'pathname'

first = Pathname.new '/first/path'
second = Pathname.new '/second/path'

relative = second.relative_path_from first
# ../../second/path

first + relative
# /second/path
Run Code Online (Sandbox Code Playgroud)