2012-05-13 13 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/..."、Shoudln'tはありますか?

+1

私は実際には 'file:/// home/...'とすべきだと思います。しかし、それは動作しますか? – robert

答えて

4

No. file://home/...は、「home」という名前のホスト上のファイルを指します。完全な構文はfile:///home/...であり、3つのスラッシュ(空のホストコンポーネントはローカルホストを示します)です。しかし、 'file'スキームを認識するほとんどのURIパーサーは、スラッシュを1つしか持たないfile:/pathnameを受け取ります。二重のスラッシュがないと、ホストコンポーネントはスキップされます。

+0

この1つのスラッシュフォームはファイルスキーム固有のものですか?これらのパーサーは類似の「http:www.something.com」を受け入れることはできません。 – ori

+0

'http:www.something.com'は、' www.something.com'がホストパートであるため、似ていません。 httpアナログは 'http:/ localhost/foo'の同義語として' http:/ foo'を受け入れますが、私はそのことをわかりません。 –

+0

ああ、私はちょうどそれを得た。まことにありがとうございます! – ori

関連する問題