Hwacha! Harness the power of Typhoeus to quickly check webpage responses.
Examples
Check a single page.
hwacha = Hwacha.new
hwacha.check('rakeroutes.com') do |url, response|
  if response.success?
    puts "Woo, #{url} looks good!"
  else
    puts "Aww, something that isn't success happened."
  end
endConfigure the maximum number of concurrent requests.
hwacha = Hwacha.new do |config|
  config.max_concurrent_requests = 10 # 20 is the default
end
# a legacy integer argument is also supported
hwacha = Hwacha.new(10)Follow redirects!
hwacha = Hwacha.new do |config|
  config.follow_redirects = true
endCheck a bunch of pages! Hwacha!
hwacha = Hwacha.new
hwacha.check(array_of_webpage_urls) do |url, response|
  # each url is enqueued in parallel using the powerful Typhoeus library!
  # this block is yielded the url and response object for every response!
endThe yielded response object is straight from Typhoeus.
hwacha.check(array_of_webpage_urls) do |url, response|
  if response.success?
    # hwacha!
  elsif response.timed_out?
    # time makes fools of us all
  elsif response.code == 0
    # misfire!
  else
    # miss! :-(
    # something like 404 in response.code
  end
endSometimes you don't want to deal with the response object. Sometimes you just want to fire a bunch of requests and find pages that successfully respond. Ok!
hwacha = Hwacha.new
hwacha.find_existing(array_of_webpage_urls) do |url|
  # this block will be called for all urls that successfully respond!
  # hwacha!
endAlternative API
More fun, more hwacha.
# fire is an alias for #check
hwacha.fire('rakeroutes.com') do |url, response|
  puts "Checking %s" % url
  if response.success?
    puts "success!"
  else
    puts "failed."
  end
end
# strike_true is an alias for #find_existing
successful = 0
hwacha.strike_true(unknown_pages) do |url|
  successful += 1
end
puts "Hwacha! #{successful} hits!"
# setting config.ricochet will also follow redirects
hwacha = Hwacha.new do |config|
  config.ricochet = true
endInstallation
Add this line to your application's Gemfile:
gem 'hwacha'
And then execute:
$ bundle
Or install it yourself as:
$ gem install hwacha