/supermodel

Ruby in-memory models

Primary LanguageRubyMIT LicenseMIT

Simple in-memory database using ActiveModel.

Primarily developed for Bowline applications.
http://github.com/maccman/bowline

Supports:
  * Serialisation
  * Validations
  * Callbacks
  * Observers
  * Dirty (Changes)
  * Ruby Marshalling to disk
  * Redis

Examples:

  require "supermodel"

  class Test < SuperModel::Base
  end

  t = Test.new
  t.name = "foo"
  t.save #=> true

  Test.all
  Test.first
  Test.last
  Test.find_by_name('foo)

You can use a random ID rather than the object ID:
  
  class Test < SuperModel::Base
    include SuperModel::RandomID
  end
  
  t = Test.create(:name => "test")
  t.id #=> "7ee935377bb4aecc54ad4f9126"
  
You can marshal objects to disk on startup/shutdown
  
  class Test < SuperModel::Base
    include SuperModel::Marshal::Model
  end
  
  SuperModel::Marshal.path = "dump.db"
  SuperModel::Marshal.load

  at_exit {
    SuperModel::Marshal.dump
  }
  
You can use Redis, you need the Redis gem installed:

  require "redis"
  class Test < SuperModel::Base
    include SuperModel::Redis::Model
  
    attributes :name
    indexes :name
  end
  
  Test.find_or_create_by_name("foo")