Working with HTTP and FTP (open-uri)
Like most other modern programming languages, Ruby ships with
libraries for working with some of the most common network protocols,
including FTP and HTTP. However, the Net::FTP and Net::HTTP libraries are designed primarily for
heavy lifting at the low level. They are great for this purpose, but they
leave something to be desired for when all that is needed is to grab a
remote file or do some basic web scraping. This is where open-uri shines.
The way open-uri works is by
patching Kernel#open to accept URIs.
This means we can directly open remote files and work with them. For
example, here’s how we’d print out Ruby’s license using open-uri:
require "open-uri"
puts open("http://www.ruby-lang.org/en/LICENSE.txt").read #=>
"Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.co.jp>.
You can redistribute it and/or modify it under either the terms of the GPL
(see COPYING.txt file), or the conditions below: ..."If we encounter an HTTP error, an OpenURI::HTTPError will be raised, including the
relevant error code:
>> open("http://majesticseacreature.com/a_totally_missing_document") OpenURI::HTTPError: 404 Not Found from /usr/local/lib/ruby/1.8/open-uri.rb:287:in 'open_http' from /usr/local/lib/ruby/1.8/open-uri.rb:626:in 'buffer_open' from /usr/local/lib/ruby/1.8/open-uri.rb:164:in 'open_loop' from /usr/local/lib/ruby/1.8/open-uri.rb:162:in 'catch' from /usr/local/lib/ruby/1.8/open-uri.rb:162:in 'open_loop' from /usr/local/lib/ruby/1.8/open-uri.rb:132:in ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access