Standard Library Essentials
URI Parsing
Ruby's URI library breaks a URL string into parts without making a network request.
uri
A `URI` object exposes pieces such as the scheme, host, path, and query string.
URI Parsing
uri_parsing.rb
Replay: real traced execution (multi-file project)
require "uri"
raw_url = "https://example.com/docs?topic=ruby"
uri = URI.parse(raw_url)
scheme = uri.scheme
host = uri.host
path = uri.path
query = uri.query || "none"
puts "scheme=#{scheme}"
puts "host=#{host}"
puts "path=#{path}"
puts "query=#{query}"
require "uri"
raw_url = "https://example.com/search?q=set"
uri = URI.parse(raw_url)
scheme = uri.scheme
host = uri.host
path = uri.path
query = uri.query || "none"
puts "scheme=#{scheme}"
puts "host=#{host}"
puts "path=#{path}"
puts "query=#{query}"
require "uri"
raw_url = "https://example.org/guide"
uri = URI.parse(raw_url)
scheme = uri.scheme
host = uri.host
path = uri.path
query = uri.query || "none"
puts "scheme=#{scheme}"
puts "host=#{host}"
puts "path=#{path}"
puts "query=#{query}"
raw_url ← https://example.com/docs?topic=ruby, uri ← https://example.com/docs?topic=ruby
1require "uri"23raw_url→ https://example.com/docs?topic=ruby = "https://example.com/docs?topic=ruby" #@raw_url="https://example.com/search?q=set", "https://example.org/guide"4uri→ https://example.com/docs?topic=ruby = URI.parse(raw_url)https://example.com/docs?topic=ruby56scheme→ https = uri.schemehttps7host→ example.com = uri.hostexample.com8path→ /docs = uri.path/docs9query→ topic=ruby = uri.querytopic=ruby || "none"1011puts "scheme=#{schemehttps}"12puts "host=#{hostexample.com}"13puts "path=#{path/docs}"14puts "query=#{querytopic=ruby}"outputscheme=https host=example.com path=/docs query=topic=ruby
raw_url ← https://example.com/search?q=set, uri ← https://example.com/search?q=set
1require "uri"23raw_url→ https://example.com/search?q=set = "https://example.com/search?q=set"4uri→ https://example.com/search?q=set = URI.parse(raw_url)https://example.com/search?q=set56scheme→ https = uri.schemehttps7host→ example.com = uri.hostexample.com8path→ /search = uri.path/search9query→ q=set = uri.queryq=set || "none"1011puts "scheme=#{schemehttps}"12puts "host=#{hostexample.com}"13puts "path=#{path/search}"14puts "query=#{queryq=set}"outputscheme=https host=example.com path=/search query=q=set
raw_url ← https://example.org/guide, uri ← https://example.org/guide
1require "uri"23raw_url→ https://example.org/guide = "https://example.org/guide"4uri→ https://example.org/guide = URI.parse(raw_url)https://example.org/guide56scheme→ https = uri.schemehttps7host→ example.org = uri.hostexample.org8path→ /guide = uri.path/guide9query→ none = uri.query(empty) || "none"1011puts "scheme=#{schemehttps}"12puts "host=#{hostexample.org}"13puts "path=#{path/guide}"14puts "query=#{querynone}"outputscheme=https host=example.org path=/guide query=none