Skip to content
On this page

End of Life Ruby 3.0 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →

module · Ruby 3.0

URI

include URI::REGEXP 12 class methods

URI is a module providing classes to handle Uniform Resource Identifiers (RFC2396).

Features

  • Uniform way of handling URIs.

  • Flexibility to introduce custom URI schemes.

  • Flexibility to have an alternate URI::Parser (or just different patterns and regexp’s).

Basic example

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

Example
module URI
  class RSYNC < Generic
    DEFAULT_PORT = 873
  end
  @@schemes['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

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 12

Constants
No documentation available
No documentation available
No documentation available
No documentation available
No documentation available
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 "}"

‘