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

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 a www-form-urlencoded or application/json encoded 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 either page & per_page or limit & offset parameters.
  • update (PUT OR PATCH /resources/123): Updates the specified resource with the fields in a www-form-urlencoded or application/json encoded HTTP request body.
  • delete (DELETE /resources/123): Deletes the specified resource.
  • susbscribe (SUBSCRIBE or GET /resources with Accept: 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.