heresy

Heresy is a schema free wrapper around your database, heavily inspired by both CouchDB and FriendFeed. You create Heresy models that work with generic schema-less tables.

class Entry < Heresy::Model
  fields do |f|
    f.string :title
  end
end

Entry.schema.create # create the table in the database

This class will use a table that looks like this:

create_table :entries do |t|
  t.primary_key :id,         :int
  t.column      :uuid,       :binary
  t.column      :updated_at, :timestamp
  t.column      :body,       :blob
end

Now you can create and retrieve models:

@entry = Entry.new :title => 'testing'
@entry.save

@entry = Entry.find('some_entry_uuid')
@entry.body = "updated"
@entry.save

UUIDs are automatically generated and used as the main ID for each record.

1: bret.appspot.com/entry/how-friendfeed-uses-mysql

TODO

- Indexes
- Associations
- Timezone conversions

NOT TODO

- Validations
- Callbacks

Use Validateable, ActiveSupport::Callbacks, ActiveModel, etc

Copyright © 2009 kabuki. See LICENSE for details.