0
Как сделать безопасный путь к присоединению в Ruby?
Моя среда разработки 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
Как правильно справиться с обоими случаями?
Ответов (2)2
0
Одно замечание. 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