如何在ruby中使用一个安全的连接路径名?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (41)

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

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

Windows中C:\tmp\abc.txt如何正确地进行路径连接以处理两个不同的环境?

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

提问于
用户回答回答于

我建议使用File.Join

>> File.join("path", "to", "join")
=> "path/to/join"
用户回答回答于

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

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

扫码关注云+社区