比如说,我知道我要从哪条绝对路径出发,我要努力走哪条绝对路径:

first = '/first/path'
second = '/second/path'

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

# answer should be /first/path/../../second/path
path = second.get_path_relative_to(first)

我怎么能用Ruby做这种事?

推荐答案

使用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

Ruby相关问答推荐

是什么导致游戏对象中的命名错误?

Ruby Case语句和固定,不适用于attr_reader

扫描不带空格的字符串中的单词

CarrierWave Multi-uploader重命名现有文件

判断数组中的字符串是否包含另一个数组中的子字符串

Ruby 匹配第一次出现的字符串以进行 gsub 替换

有没有一种简单的方法可以在 Ruby 中获取图像尺寸?

Symfony 2assets资源过滤器异常中的指南针

Sinatra 与 EventMachine WebSockets 一起工作是否成功?

如何使用 Ruby 删除字符串中某个字符后的子字符串?

在Ruby中将关键字与常规参数混合?

有没有办法在 RSpec 中取消存根?

带有可选参数的方法

你能在 Python 的核心类型上修改补丁方法吗?

在 Ruby 中按名称获取一个类?

使用 Ruby CSV 在导出的 CSV 中更改字段分隔符/分隔符

如何在 Ruby 中重命名文件?

使用 RSpec 测试哈希内容

Integer 和 Fixnum 有什么区别?

如何在ruby脚本中隐藏终端的密码输入