【问题标题】:How to do a safe join pathname in ruby?如何在 ruby​​ 中做一个安全的连接路径名?
【发布时间】:2010-10-10 11:53:17
【问题描述】:

我的 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

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

【问题讨论】:

    标签: ruby


    【解决方案1】:

    我推荐使用 File.join

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

    【讨论】:

      【解决方案2】:

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

      File.join() 是您一起加入路径的朋友。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-12
        • 1970-01-01
        • 1970-01-01
        • 2010-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多