Ответ 1
Я рекомендую использовать File.join
>> File.join("path", "to", "join")
=> "path/to/join"
Моя среда разработки 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.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