Man*_*rty 12 ruby cross-platform
我正在编写一个可以跨平台工作的rake构建脚本(Mac OSX,Linux,Windows).构建脚本将由 CI服务器使用.
我希望我的脚本的逻辑如下:
我目前正在使用Pathname.new(location).absolute?但它在Windows上无法正常工作.
你会为此建议什么方法?
小智 27
require 'pathname'
(Pathname.new "/foo").absolute? # => true
(Pathname.new "foo").absolute? # => false
Run Code Online (Sandbox Code Playgroud)
您正在寻找的方法是realpath.
基本上你这样做:
absolute_path = Pathname.new(path).realpath
Run Code Online (Sandbox Code Playgroud)
注意:Pathname模块指出在没有像路径名这样的unix的机器上使用是实验性的.所以它依赖于实现.看起来JRuby应该适用于Windows.
有一个内置函数可以涵盖这两种情况并且完全符合您的要求:
output_path = File.absolute_path(user_supplied_path, FOO_HOME)
Run Code Online (Sandbox Code Playgroud)
诀窍是提供第二个参数。当(且仅当)第一个参数是一个相对路径时,它作为一个基本目录。