Rack::Scaffold
Automatically generate RESTful CRUD services
This project generalizes the webservice auto-generation functionality of Rack::CoreData with a plugin architecture that can adapt to any data model format. It is currently used in the latest release of Helios
Supported Data Models
- Core Data Model (
.xcdatamodeld) - Sequel
- ActiveRecord
Usage
Gemfile
source :rubygems
gem 'rack-scaffold', require: 'rack/scaffold'
gem 'sequel'
gem 'core_data'
gem 'unicorn'
gem 'pg'
config.ru
require 'sequel'
require 'core_data'
require 'rack/scaffold'
DB = Sequel.connect(ENV['DATABASE_URL'])
run Rack::Scaffold model: './Example.xcdatamodeld', only: [:create, :read]
Available Actions
By default, Rack::Scaffold will enable all of the actions described below. Actions can be whitelisted or blacklisted by passing either the only or except options, respectively.
create(POST /resources): Creates a new resource with the fields in awww-form-urlencodedorapplication/jsonencoded HTTP request body.read(GET /resources&GET /resources/123): Reads a collection of resources or an individual resource at the specified URI. Supports pagination by passing eitherpage&per_pageorlimit&offsetparameters.update(PUTORPATCH /resources/123): Updates the specified resource with the fields in awww-form-urlencodedorapplication/jsonencoded HTTP request body.delete(DELETE /resources/123): Deletes the specified resource.susbscribe(SUBSCRIBEorGET /resourceswithAccept: text/event-stream): Subscribes to create, update, and delete actions performed, streaming corresponding JSON Patch diffs. You can read more about the Rocket technique for streaming REST resources at http://rocket.github.io.
Examples
An example web API using a Core Data model can be found the /example directory.
Contact
Mattt Thompson
License
Rack::Scaffold is available under the MIT license. See the LICENSE file for more info.