On this page
End of Life Ruby 3.2 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →
URI
URI is a module providing classes to handle Uniform Resource Identifiers (RFC2396).
Features
-
Uniform way of handling URIs.
-
Flexibility to introduce custom
URIschemes. -
Flexibility to have an alternate
URI::Parser(or just different patterns and regexp’s).
Basic example
require 'uri' uri = URI("http://foo.com/posts?id=30&limit=5#time=1305298413") #=> #<URI::HTTP http://foo.com/posts?id=30&limit=5#time=1305298413> uri.scheme #=> "http" uri.host #=> "foo.com" uri.path #=> "/posts" uri.query #=> "id=30&limit=5" uri.fragment #=> "time=1305298413" uri.to_s #=> "http://foo.com/posts?id=30&limit=5#time=1305298413"
Adding custom URIs
module URI class RSYNC < Generic DEFAULT_PORT = 873 end register_scheme 'RSYNC', RSYNC end #=> URI::RSYNC URI.scheme_list #=> {"FILE"=>URI::File, "FTP"=>URI::FTP, "HTTP"=>URI::HTTP, # "HTTPS"=>URI::HTTPS, "LDAP"=>URI::LDAP, "LDAPS"=>URI::LDAPS, # "MAILTO"=>URI::MailTo, "RSYNC"=>URI::RSYNC} uri = URI("rsync://rsync.foo.com") #=> #<URI::RSYNC rsync://rsync.foo.com>
RFC References
A good place to view an RFC spec is www.ietf.org/rfc.html.
Here is a list of all related RFC’s:
Class tree
-
URI::Generic(in uri/generic.rb)-
URI::File- (in uri/file.rb) -
URI::FTP- (in uri/ftp.rb) -
URI::HTTP- (in uri/http.rb)-
URI::HTTPS- (in uri/https.rb)
-
-
URI::LDAP- (in uri/ldap.rb)-
URI::LDAPS- (in uri/ldaps.rb)
-
-
URI::MailTo- (in uri/mailto.rb)
-
-
URI::Parser- (in uri/common.rb) -
URI::REGEXP- (in uri/common.rb)-
URI::REGEXP::PATTERN - (in uri/common.rb)
-
-
URI::Util - (in uri/common.rb)
-
URI::Error- (in uri/common.rb)-
URI::InvalidURIError- (in uri/common.rb) -
URI::InvalidComponentError- (in uri/common.rb) -
URI::BadURIError- (in uri/common.rb)
-
Copyright Info
- Author
-
Akira Yamada <[email protected]>
- Documentation
-
Akira Yamada <[email protected]> Dmitry V. Sabanin <[email protected]> Vincent Batts <[email protected]>
- License
-
Copyright © 2001 akira yamada <[email protected]> You can redistribute it and/or modify it under the same term as Ruby.
Class methods 17
curl https://encoding.spec.whatwg.org/encodings.json|
ruby -rjson -e 'H={}
h={
"shift_jis"=>"Windows-31J",
"euc-jp"=>"cp51932",
"iso-2022-jp"=>"cp50221",
"x-mac-cyrillic"=>"macCyrillic",
}
JSON($<.read).map{|x|x["encodings"]}.flatten.each{|x|
Encoding.find(n=h.fetch(n=x["name"].downcase,n))rescue next
x["labels"].each{|y|H[y]=n}
}
puts "{"
H.each{|k,v|puts %[ #{k.dump}=>#{v.dump},]}
puts "}"
‘