/glass

A lightweight Rails Engine for an open RESTful API for client-side Javascript frameworks

Primary LanguageRubyMIT LicenseMIT

Glass

Gem Version Build Status Coverage Status Code Climate

Glass is a lightweight Rails Engine that is built to do all the heavy lifting from serving an API in your Rails Application.

Features

  • CRUD for your models without a Controller
  • Integrates quickly for all client-side Javascript frameworks (Ember, Backbone, Angular)

Installation

Add this line to your application's Gemfile:

gem 'glass-api', require: 'glass'

And then execute:

$ bundle

Or install it yourself as:

$ gem install glass-api

And then run:

rails generate glass:install

This generator will install Glass. It will also add an initializer in config/initializer/glass.rb

Glass.configure do |config|
  config.models = ['User']
  config.app_name = 'Test App'
  config.format = :json
end

It will modify your app/assets/javascripts/application.js, adding:

//= require glass

It will modify your config/routes.rb, adding:

mount Glass::Engine => '/api', as: 'glass'

Usage

Ruby

Start the server:

rails server

Javascript

The following usage examples makes use of the Glass API given that you have a User model in your Rails app and you have configured the Glass gem to expose it.

Find

Finds a list of records in a model with 'Foo' as name.

glass.User.find({
  name: 'Foo'
}, function (error, res) {
  if (!error) {
    // Do something with res
  }
});
Find All

The following usage example finds all users.

glass.User.findAll(function (error, res) {
  if (!error) {
    // Do something with res
  }
});
Create

Create a new user record.

var user = {
  name: 'Jaune Sarmiento',
  email: 'hello@jaunesarmiento.me'
};

glass.User.create(user, function (error, res) {
  if (!error) {
    // Do something with res
  }
});
Update

Update the user with id == 1 and update its name to Joko.

// Given our create() function returns the user object with 1 as id
var user = {
  id: 1,
  name: 'Joko'
};

glass.User.update(user, function (error, res) {
  if (!error) {
    // Do something with res
  }
});
Delete

Delete a user record with id == 1.

glass.User.delete({id: 1}, function (error, res) {
  if (!error) {
    // Do something with res
  }
});

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

License

MIT. See License for more details. Copyright (c) 2013 TeamSBK. Powered by Proudcloud Inc.