Generate a RESTful API from a directory of ActiveRecord models.
I am not yet running this in production and the gem is not very extensible at this point. Consider it a proof of concept.
Throw this in your Gemfile:
gem 'hovercraft'
Put your ActiveRecord models in models/
(make sure the file names
are the same as the class names).
Here's an example:
# models/employee.rb
class Employee < ActiveRecord::Base
attr_accessible :name, :career
end
If you need help setting up an entire sinatra app here's a full example: http://github.com/vanstee/hovercraft_example
Create a rackup file that generates the application:
# config.ru
require 'bundler'
Bundler.require
run Hovercraft::Server.new
If you need more setup I'd recommend using an application.rb
file
and requiring that in the config.ru
instead.
Run the application like normal:
bundle exec rackup
Make some requests:
Create a record:
curl -H 'Content-type: application/json' \
-X POST \
-d '{ "employee": { "name": "Philip J. Fry", "career": "Delivery Boy 1st Class" } }' \
http://localhost:9292/employees.json
Show all records:
curl http://localhost:9292/employees.json
Show a single record:
curl http://localhost:9292/employees/1.json
Update a record:
curl -H "Content-type: application/json" \
-X PUT \
-d '{ "employee": { "name": "Philip J. Fry", "career": "Executive Delivery Boy" } }' \
http://localhost:9292/employees/1.json
Delete a record:
curl -X DELETE http://localhost:9292/employees/1.json
Include warden
in your Gemfile:
gem 'warden'
Use rack builder to add warden strategies to your rackup file:
# config.ru
require 'bundler'
Bundler.require
application = Rack::Builder.new do
use Rack::Session::Cookie, secret: '...'
Warden::Strategies.add :password do
def valid?
...
end
def authenticate
...
end
end
use Warden::Manager do |manager|
manager.default_strategies :password
manager.failure_app = ...
end
run Hovercraft::Server
end
run application
See the warden project for more in-depth examples or help troubleshooting.
Fork it:
Create your feature branch:
git checkout -b fixes_horrible_spelling_errors
Commit your changes:
git commit -am 'Really? You spelled application as "applickachon"?'
Push the branch:
git push origin fixes_horrible_spelling_errors
Create a pull request: