Equivalent of cURL for Ruby?

RubyCurl

Ruby Problem Overview


Is there a cURL library for Ruby?

Ruby Solutions


Solution 1 - Ruby

Curb and Curl::Multi provide cURL bindings for Ruby.

Solution 2 - Ruby

If you like it less low-level, there is also Typhoeus, which is built on top of Curl::Multi.

Solution 3 - Ruby

Use OpenURI and

  open("http://...", :http_basic_authentication=>[user, password])

accessing sites/pages/resources that require HTTP authentication.

Solution 4 - Ruby

Curb-fu is a wrapper around Curb which in turn uses libcurl. What does Curb-fu offer over Curb? Just a lot of syntactic sugar - but that can be often what you need.

Solution 5 - Ruby

HTTP clients is a good page to help you make decisions about the various clients.

Solution 6 - Ruby

You might also have a look at Rest-Client

Solution 7 - Ruby

the eat gem is a "replacement" for OpenURI, so you need to install the gem eat in the first place

$ gem install eat

Now you can use it

require 'eat'
eat('http://yahoo.com')                 #=> String
eat('/home/seamus/foo.txt')             #=> String
eat('file:///home/seamus/foo.txt')      #=> String

It uses HTTPClient under the hood. It also has some options:

eat('http://yahoo.com', :timeout => 10)                   # timeout after 10 seconds
eat('http://yahoo.com', :limit => 1024)                   # only read the first 1024 chars
eat('https://yahoo.com', :openssl_verify_mode => 'none')  # don't bother verifying SSL certificate

Solution 8 - Ruby

If you know how to write your request as a curl command, there is an online tool that can turn it into ruby (2.0+) code: curl-to-ruby

Currently, it knows the following options: -d/--data, -H/--header, -I/--head, -u/--user, --url, and -X/--request. It is open to contributions.

Solution 9 - Ruby

There's also Mechanize, which is a very high-level web scraping client that uses Nokogiri for HTML parsing.

Solution 10 - Ruby

Here's a little program I wrote to get some files with.

base = "http://media.pragprog.com/titles/ruby3/code/samples/tutthreads_"

for i in 1..50

  url = "#{ base }#{ i }.rb"
  file = "tutthreads_#{i}.rb"

  File.open(file, 'w') do |f|	
    system "curl -o #{f.path} #{url}"
  end

end

I know it could be a little more eloquent but it serves it purpose. Check it out. I just cobbled it together today because I got tired of going to each URL to get the code for the book that was not included in the source download.

Solution 11 - Ruby

Adding a more recent answer, HTTPClient is another Ruby library that uses libcurl, supports parallel threads and lots of the curl goodies. I use HTTPClient and Typhoeus for any non-trivial apps.

Solution 12 - Ruby

To state the maybe-too-obvious, tick marks execute shell code in Ruby as well. Provided your Ruby code is running in a shell that has curl:

puts `curl http://www.google.com?q=hello`

or

result = `
  curl -X POST https://www.myurl.com/users \
  -d "name=pat" \
  -d "age=21"
` 
puts result

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser85748View Question on Stackoverflow
Solution 1 - Rubyuser1686View Answer on Stackoverflow
Solution 2 - RubySkadeView Answer on Stackoverflow
Solution 3 - RubyapostlionView Answer on Stackoverflow
Solution 4 - RubyPeter CooperView Answer on Stackoverflow
Solution 5 - RubyMr. RonaldView Answer on Stackoverflow
Solution 6 - RubyAnhView Answer on Stackoverflow
Solution 7 - RubySeamus AbshereView Answer on Stackoverflow
Solution 8 - RubycbliardView Answer on Stackoverflow
Solution 9 - RubymethodView Answer on Stackoverflow
Solution 10 - RubyDouglas G. AllenView Answer on Stackoverflow
Solution 11 - Rubythe Tin ManView Answer on Stackoverflow
Solution 12 - RubysteelView Answer on Stackoverflow