如何在ruby中做一个安全的连接path名?

我的Rails开发环境是基于Windows的,我的生产环境是基于Linux的。

VirtualHost可能会被使用。 假定一个文件名需要在File.open('/tmp/abc.txt', 'r')/public文件夹中被引用。

但在Windows中,应该是C:\tmp\abc.txt 。 我如何做一个正确的path连接来处理这两个不同的环境?

 prefix_tmp_path = '/tmp/' filename = "/#{rand(10)}.txt" fullname = prefix_tmp_path + filename # /tmp//1.txt <- but I don't want a double // 

prefix_tmp_path = "C:\tmp\"我得到C:\tmp\/1.txt

处理这两种情况的正确方法是什么?

我build议使用File.join

 >> File.join("path", "to", "join") => "path/to/join" 

有一件事要注意。 Ruby在所有平台(包括Windows)上都使用“/”作为文件分隔符,因此实际上不需要使用不同的代码将不同的平台上的东西连接在一起。 “C:/tmp/1.text”应该可以正常工作。

File.join()是你一起joinpath的朋友。

 prefix_tmp_path = 'C:/tmp' filename = "#{rand(10)}.txt" fullname = File.join(prefix_tmp_path, filename) # eg, C:/tmp/3.txt