No commit activity in last 3 years
No release in over 3 years
Instant ActiveResource compatible resources for sinatra.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

~> 0.9.0.4
 Project Readme

Classy Resources¶ ↑

With a simple, declarative syntax, you can create active_resource compatible REST APIs incredibly quickly.

Think resource_controller, except for Sinatra.

Installation¶ ↑

sudo gem install giraffesoft-classy_resources

Usage¶ ↑

require 'rubygems'
require 'sinatra'
require 'classy_resources'
require 'classy_resources/active_record'
# ... or require 'classy_resources/sequel'
# more ORMs coming (it's also easy to implement your own)...

define_resource :posts, :member     => [:get, :put, :delete],
                        :collection => [:get, :post],
                        :formats    => [:xml, :json, :yaml]

The above declaration will create the five actions specified, each responding to all of the formats listed.

- GET /resources.format      # => index
- POST /resources.format     # => create
- GET /resources/1.format    # => show
- PUT /resources/1.format    # => update
- DELETE /resources/1.format # => destroy

Since ClassyResources was designed to be active resource compatible, the params formats and return values are what AR expects.

Overrides¶ ↑

In the above example, :posts would map to a Post class. If your class is named differently, you just override class_for. For example, if your Post class was stored in a module:

def class_for(resource)
  MyModule.const_get(resource.to_s.singularize.classify.constantize)
end

Or, if you wanted to change how objects were being serialized:

def serialize(object, format)
  MySerializer.new(object, format).to_s
end

Other method signatures you might want to override:

- def load_collection(resource)
- def build_object(resource, params)
- def load_object(resource, id)
- def update_object(object, params) # Note that this doesn't save. It just changes the attributes.
- def destroy_object(object)

Copyright © 2008 James Golick, Daniel Haran, GiraffeSoft Inc.. See LICENSE for details.