Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Ruby in-memory models
Ruby
branch: master

This branch is 2 commits ahead, 6 commits behind maccman:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
.gitignore
MIT-LICENSE
README
Rakefile
VERSION
supermodel.gemspec

README

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)

Specify model attributes to use validations

class User < SuperModel::Base
  include SuperModel::Marshal::Model

  attributes :first_name, :last_name

  validates_presence_of :first_name, :last_name

end

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")
Something went wrong with that request. Please try again.