IT story

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

hot-time 2020. 5. 24. 10:50
반응형

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


내 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

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

반응형