README.md in alba-0.3.0 vs README.md in alba-0.4.0

- old
+ new

@@ -2,11 +2,11 @@ [![Coverage Status](https://coveralls.io/repos/github/okuramasafumi/alba/badge.svg?branch=master)](https://coveralls.io/github/okuramasafumi/alba?branch=master) [![Maintainability](https://api.codeclimate.com/v1/badges/fdab4cc0de0b9addcfe8/maintainability)](https://codeclimate.com/github/okuramasafumi/alba/maintainability) # Alba -`Alba` is a fast and flexible JSON serializer. +`Alba` is a stupid, fast and easy to use JSON serializer. ## Installation Add this line to your application's Gemfile: @@ -22,10 +22,12 @@ $ gem install alba ## Usage +### Simple serialization with key + ```ruby class User attr_accessor :id, :name, :email, :created_at, :updated_at def initialize(id, name, email) @id = id @@ -54,9 +56,67 @@ user = User.new(1, 'Masafumi OKURA', 'masafumi@example.com') UserResource.new(user).serialize # => "{\"id\":1,\"name\":\"Masafumi OKURA\",\"name_with_email\":\"Masafumi OKURA: masafumi@example.com\"}" ``` + +### Serialization with associations + +```ruby +class User + attr_reader :id, :created_at, :updated_at + attr_accessor :articles + + def initialize(id) + @id = id + @created_at = Time.now + @updated_at = Time.now + @articles = [] + end +end + +class Article + attr_accessor :user_id, :title, :body + + def initialize(user_id, title, body) + @user_id = user_id + @title = title + @body = body + end +end + +class ArticleResource + include Alba::Resource + + attributes :title +end + +class UserResource1 + include Alba::Resource + + attributes :id + + many :articles, resource: ArticleResource +end + +user = User.new(1) +article1 = Article.new(1, 'Hello World!', 'Hello World!!!') +user.articles << article1 +article2 = Article.new(2, 'Super nice', 'Really nice!') +user.articles << article2 + +UserResource1.new(user).serialize +# => '{"id":1,"articles":[{"title":"Hello World!"},{"title":"Super nice"}]}' +``` + +## Comparison + +Since Alba is intended to be stupid, there are many things Alba can't do while other gems can. However, from the same reason, it's extremely faster than alternatives. +For a performance benchmark, see https://gist.github.com/okuramasafumi/4e375525bd3a28e4ca812d2a3b3e5829. + +## Why named "Alba"? + +The name "Alba" comes from "albatross", a kind of birds. In Japanese, this bird is called "Aho-dori", which means "stupid bird". I find it funny because in fact albatrosses fly really fast. I hope Alba looks stupid but in fact it does its job quick. ## Development After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.