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-urlencoded
orapplication/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 eitherpage
&per_page
orlimit
&offset
parameters.update
(PUT
ORPATCH /resources/123
): Updates the specified resource with the fields in awww-form-urlencoded
orapplication/json
encoded HTTP request body.delete
(DELETE /resources/123
): Deletes the specified resource.susbscribe
(SUBSCRIBE
orGET /resources
withAccept: 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.