Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
a faraday middleware that respects HTTP cache
Ruby
branch: master

This branch is 1 commit ahead, 194 commits behind plataformatec:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
examples
gemfiles
lib
log
spec
.gitignore
.travis.yml
Gemfile
Gemfile.lock
LICENSE
README.md
Rakefile
faraday-http-cache.gemspec

README.md

Faraday Http Cache

Build Status

a Faraday middleware that respects HTTP cache, by checking expiration and validation of the stored responses.

Installation

Add it to your Gemfile:

gem 'faraday-http-cache'

Usage and configuration

You have to use the middleware in the Faraday instance that you want to. You can use the new shortcut using a symbol or passing the middleware class

client = Faraday.new do |builder|
  builder.use :http_cache
  # or
  builder.use Faraday::HttpCache

  builder.adapter Faraday.default_adapter
end

The middleware uses the ActiveSupport::Cache API to record the responses from the targeted endpoints, and any extra configuration option will be used to setup the cache store.

# Connect the middleware to a Memcache instance.
client = Faraday.new do |builder|
  builder.use :http_cache, :mem_cache_store, "localhost:11211"
  builder.adapter Faraday.default_adapter
end

# Or use the Rails.cache instance inside your Rails app.
client = Faraday.new do |builder|
  builder.use :http_cache, Rails.cache
  builder.adapter Faraday.default_adapter
end

The default store provided by ActiveSupport is the MemoryStore one, so it's important to configure a proper one for your production environment.

Logging

You can provide a :logger option that will be receive debug informations based on the middleware operations:

client = Faraday.new do |builder|
  builder.use :http_cache, :logger => Rails.logger
  builder.adapter Faraday.default_adapter
end

client.get('http://site/api/users')
# logs "HTTP Cache: [GET users] miss, store"

See it live

You can clone this repository, install it's dependencies with Bundler (run bundle install) and execute the examples/twitter.rb file to see a sample of the middleware usage - it's issuing requests to the Twitter API and caching them, so the rate limit isn't reduced on every request by the client object. After sleeping for 5 minutes the cache will expire and the client will hit the Twitter API again.

License

Copyright (c) 2012 Plataformatec. See LICENSE file.

Something went wrong with that request. Please try again.