programing

루비에서 안전한 조인 경로 이름을 수행하는 방법은 무엇입니까?

mbctv 2023. 6. 15. 23:18
반응형

루비에서 안전한 조인 경로 이름을 수행하는 방법은 무엇입니까?

My Rails 개발 환경은 윈도우즈 기반이고 운영 환경은 리눅스 기반입니다.

가상 호스트가 사용될 수 있습니다.하나의 파일 이름을 에서 참조해야 한다고 가정합니다./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

언급URL : https://stackoverflow.com/questions/597488/how-to-do-a-safe-join-pathname-in-ruby

반응형