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'