Getting started
The quickest way to start experimenting with Bmg is to create a simple script and set up a relation.
require 'bundler/inline'
gemfile do  source 'https://rubygems.org'  gem 'bmg'  gem 'json'end
suppliers = Bmg::Relation.new([  { sid: "S1", name: "Smith", status: 20, city: "London" },  { sid: "S2", name: "Jones", status: 10, city: "Paris"  },  { sid: "S3", name: "Blake", status: 30, city: "Paris"  },  { sid: "S4", name: "Clark", status: 20, city: "London" },  { sid: "S5", name: "Adams", status: 30, city: "Athens" }])
by_city = suppliers  .exclude(status: 30)  .extend(upname: ->(t){ t[:name].upcase })  .group([:sid, :name, :upname, :status], :suppliers_in)
puts JSON.pretty_generate(by_city)This script will output:
[  {    "city": "London",    "suppliers_in": [      {        "sid": "S1",        "name": "Smith",        "status": 20,        "upname": "SMITH"      },      {        "sid": "S4",        "name": "Clark",        "status": 20,        "upname": "CLARK"      }    ]  },  {    "city": "Paris",    "suppliers_in": [      {        "sid": "S2",        "name": "Jones",        "status": 10,        "upname": "JONES"      }    ]  }]Here, we created a relation from an array of hashes. Relations can in fact be created using any Enumerable which yields hashes.