2012-05-13 4 views
3

У меня есть строка, представляющая путь к файлу, такой как «/home/user/dir1/dir2/dir3/name.ext». Теперь я хотел бы преобразовать его в юридический URI (строка, начинающаяся с «file: //» и т. Д.).Преобразование пути к URI

Как это сделать в Ruby?

ответ

5
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.scheme 
=> "file" 
uri.path 
=> "/home/user/dir1/dir2/dir3/name.ext" 
uri.to_s 
=> "file:/home/user/dir1/dir2/dir3/name.ext" 
+0

Спасибо, но не является результатом (uri.to_s) незаконным? Разве это не должно быть «file: // home ...»? – ori

+0

@ user1372109 Он должен быть 'file: /// home/...'. Часть 'file: //' - это схема, а третья косая черта - начало пути. – d11wtq

+1

Это может показаться ошибкой, поэтому я открыл другой поток: http://stackoverflow.com/questions/10571945/ruby-uri-module-produces-illegal-file-uri – ori

Смежные вопросы