반응형
루비에서 안전한 조인 경로 이름을 만드는 방법은 무엇입니까?
내 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
반응형
'IT story' 카테고리의 다른 글
PDO에서 영구 연결을 사용할 때의 단점은 무엇입니까 (0) | 2020.05.24 |
---|---|
`on`과`live` 또는`bind`의 차이점은 무엇입니까? (0) | 2020.05.24 |
Groovy :“def x = 0”에서“def”의 목적은 무엇입니까? (0) | 2020.05.24 |
iPhone의 세로로 표시된 UISplitViewController는 마스터 대신 세부 VC를 보여줍니다. (0) | 2020.05.24 |
android.app.Fragment와 android.support.v4.app.Fragment의 차이점 (0) | 2020.05.24 |