Rails framework to add RESTful hypermedia API to your application.
Garage provides a simple, Hypermedia friendly RESTful API to your Rails application using its native RESTful routes. Garage provides a descriptive way to serve your ActiveRecord models, as well as plain old Ruby objects as JSON-based resources.
Garage supports OAuth 2 authorizations via Doorkeeper (more extensions to come), and provides resource-based access controls.
In Gemfile
:
gem 'garage', github: 'cookpad/garage'
gem 'responders', '~> 2.0' # If you use Rails4.2+
In your Rails model class:
class Employee < ActiveRecord::Base
include Garage::Representer
belongs_to :division
property :id
property :title
property :first_name
property :last_name
property :division, selectable: true
link(:division) { division_path(division) }
def self.build_permissions(perms, other, target)
perms.permits! :read
end
end
In your controller class:
class EmployeesController < ApplicationController
include Garage::RestfulActions
def require_resources
@resources = Employee.all
end
end
In config/initializer/garage.rb
:
# Optional
Garage::TokenScope.configure do
register :public, desc: "accessing publicly available data" do
access :read, Recipe
end
register :read_post, desc: "reading blog post" do
access :read, Post
end
end
Doorkeeper.configure do
# regular doorkeeper configurations go here
default_scopes :public
optional_scopes *Garage::TokenScope.optional_scopes
end
- Tatsuhiko Miyagawa
- Taiki Ono
- Yusuke Mito
- Ryo Nakamura