This question already has an answer here:
A separate SO post offers different methods for fetching web content in Ruby, but doesn't fully explain why one is preferable to the other.
What is the difference between using open() and the NET::HTTP module, as demonstrated below, to fetch web content? Why is NET::HTTP considered the "better" approach?
**open() 1:**
require 'open-uri'
file = open('http://hiscore.runescape.com/index_lite.ws?player=zezima')
contents = file.read
**open() 2:**
require 'open-uri'
source = open('http://www.google.com', &:read)
**NET::HTTP 1:**
require 'uri'
require 'net/http'
url = "http://hiscore.runescape.com/index_lite.ws?player=zezima"
r = Net::HTTP.get_response(URI.parse(url).host, URI.parse(url).path)
Rule of thumb: Use
OpenURI
whenever you can.The reason is that
OpenURI
is just a wrapper aroundNet::HTTP
, therefore it will require less code to be written. So if all you do is performing simple GET requests, go for it.On the other hand, prefer
Net::HTTP
if you want some lower-level functionality that youOpenURI
does not give you. It is not a better approach, but it provides more flexibility in terms of configuration.As the official documentation states: