Hassle-free caching for HTTP download with ruby
Ruby
Latest commit 71e0c68 Jul 29, 2016 @DannyBen version bump
Permalink
Failed to load latest commit information.
lib
spec
.gitignore
.rspec
.travis.yml
Gemfile
LICENSE
README.md
Runfile
webcache.gemspec

README.md

WebCache

Gem Travis Code Climate Gemnasium


Hassle-free caching for HTTP download.


Install

$ gem install webcache

Or with bundler:

gem 'webcache'

Usage

Load a file from cache, or download if needed:

require 'webcache'
cache = WebCache.new
response = cache.get 'http://example.com'
puts response             # => "<html>...</html>"
puts response.content     # => same as above
puts response.to_s        # => same as above
puts response.error       # => nil
puts response.base_uri    # => "http://example.com/"

By default, the cached objects are stored in the ./cache directory, and expire after 60 minutes. The cache directory will be created as needed.

You can change these settings on initialization:

cache = WebCache.new 'tmp/my_cache', 7200
response = cache.get 'http://example.com'

Or later:

cache = WebCache.new
cache.dir = 'tmp/my_cache'
cache.life = 7200 # seconds
response = cache.get 'http://example.com'

To check if a URL is cached, use the cached? method:

cache = WebCache.new
cache.cached? 'http://example.com'
# => false

response = cache.get 'http://example.com'
cache.cached? 'http://example.com'
# => true

You can enable/disable the cache at any time:

cache = WebCache.new
cache.disable
cache.enabled? 
# => false

response = cache.get 'http://example.com'
cache.cached? 'http://example.com'
# => false

cache.enable
response = cache.get 'http://example.com'
cache.cached? 'http://example.com'
# => true

Response Object

The response object holds these properties:

response.content:
Contains the HTML content. In case of an error, this will include the error message. The #to_s method of the response object also returns the same content.

response.error:
In case of an error, this contains the error message, nil otherwose.

response.base_uri:
Contains the actual address of the page. This is useful when the request is redirected. For example, http://example.com will set the base_uri to http://example.com/ (note the trailing slash).

cache = WebCache.new
response = cache.get 'http://example.com/not_found'
puts response
# => '404 Not Found'

puts response.error
# => '404 Not Found'