Skip to content
On this page
module · Ruby 4.0

URI

16 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
  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

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 16

Constants

The default parser instance.

The default parser instance for RFC 2396.

The default parser instance for RFC 3986.

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 "}"

‘