MemModel persists Ruby objects using MagLev as a data storage engine. It is an ActiveModel compliant implementation so it works stand-alone or in Rails 3 as a drop-in replacement for ActiveRecord or DataMapper.
If MemModel is used in non-MagLev platforms, objects will be persisted to in-memory sets.
Installation
Run gem install mem_model
to install the gem on its own.
Or you can add the following to your Gemfile and run the bundle
command to
install it.
gem 'mem_model'
Development
If you'd like to work on this project first make sure you have the hoe
gem
installed (gem install hoe
if not), then run rake newb
from the
mem_model
project directory.
Example
require 'mem_model'
class Account
include MemModel::Base
attr_accessor :balance
validates_presence_of :balance
end
checking = Account.new #=> #<Account balance: nil, id: 17338520>
checking.valid? #=> false
checking.balance = 100 #=> 100
checking.valid? #=> true
checking.save #=> 17338520
checking.new? #=> false
Account.size #=> 1
Account.first #=> #<Account balance: 100, id: 17338520>
Similar stuff
This stuff has been very helpful in working on MemModel.
Projects
- Tesla: MagLev niceties like models... and signs
- Supermodel. Simple in-memory database using ActiveModel. Primarily developed for Bowline applications.
- ActiveAttr: What ActiveModel left out
- MagLevRecord: MagLev persistence with an ActiveRecord-like interface!
Docs
- MagLev Persistence API: Overview of the persistence API inMagLev
- Persistence README: MagLev Persistence Examples overview
- Migrations: The Problem: Evolution of Persistent Data Formats (Schema Changes)
- Migrations DSL: Requirements for a Migration DSL which would allow "rails-like" migrations for MagLev.
Examples
- Blog Data Migration Example: create a blog, add attributes, migrate existing instances
- K-d Tree: includes a Google Maps example using zipcodes
- Indexing: use unordered collections with MagLev's built-in indexing support
- Points: shows two approaches of handling data migration using a Point class.
Contributing
If you'd like to contribute to MemModel, that's awesome. There's a guide to contributing (both code and general help) over in CONTRIBUTING.md
Development
To see what has changed in recent versions, see the CHANGELOG.md.