내 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"
답변
한가지주의 할 점. 루비는 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