HTTP and server side cache integration for Grape and Rails

Features

  • HTTP Headers cache, ETag, Cache-Control, If-None-Match
  • Server side cache for response body

Installation

Add this line to your rails application's Gemfile:

gem 'grape-rails-cache'

And then execute:

$ bundle

Usage

module MyApi < Grape::API
  format :json

  include Grape::Rails::Cache

  resources :posts do
    desc "Return a post"
    get ":id" do
      post = Post.find(params[:id])
      cache(key: "api:posts:#{post.id}", etag: post.updated_at, expires_in: 2.hours) do
        post # post.extend(PostRepresenter) etc, any code that renders response
      end
    end
  end
end

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request