2012-05-13 6 views
3

Converting file path to URI에 대한 후속 질문입니다.Ruby URI 모듈이 잘못된 파일 URI를 생성합니다.

고려 :

require 'uri' 

uri = URI.join('file:///', '/home/user/dir1/dir2/dir3/name.ext') 
=> #<URI::Generic:0x0000000263fcc0 URL:file:/home/user/dir1/dir2/dir3/name.ext> 

uri.to_s 
=> "file:/home/user/dir1/dir2/dir3/name.ext" 

이 결과는 불법 아닌가요? 더블 슬래시가있는 "file://home/..."이 아니겠습니까?

+1

사실 나는 그것이'file : /// home/... '이어야한다고 생각합니다. 그러나 그것은 효과가 있습니까? – robert

답변

4

번호 file://home/...은 '집'이라는 호스트의 파일을 참조합니다. 전체 구문은 file:///home/...이고 세 개의 슬래시입니다. 빈 호스트 구성 요소는 로컬 호스트를 나타냅니다. 그러나 '파일'체계를 인식하는 대부분의 URI 파서는 file:/pathname도 허용하며 하나의 슬래시 만 허용합니다. 두 배의 슬래시가 없으면 호스트 구성 요소를 건너 뜁니다.

+0

이렇게 하나의 슬래시 양식은 파일 체계에 고유합니까? 그 파서는 유사한 "http : www.something.com"을 받아들이지 않을 것입니다, 맞습니까? – ori

+0

'http : www.something.com'은 'www.something.com'이 호스트 부분이기 때문에 유사하지 않습니다. http 아날로그는'http :/localhost/foo'의 동의어로'http :/foo'를 수락 할 것이지만, 그 일을 알지 못합니다. –

+0

아, 방금 가져 왔습니다. 좋아, 고마워! – ori

관련 문제