mattt / Rack Scaffold
Licence: mit
Automatically generate REST APIs from Core Data models
Stars: ✭ 535
Programming Languages
ruby
36898 projects - #4 most used programming language
Rack::Scaffold
Automatically generate RESTful CRUD services
This project is no longer maintained.
Installation
Gemfile
source :rubygems
gem 'rack-scaffold', require: 'rack/scaffold'
gem 'sequel'
gem 'core_data'
gem 'unicorn'
gem 'pg'
Usage
An example web API using a Core Data model can be found the /example
directory.
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.
Supported Data Models
-
Core Data Model (
.xcdatamodeld
) - Sequel
- ActiveRecord
Contact
License
Rack::Scaffold is available under the MIT license. See the LICENSE file for more info.
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].