Hi!

I'm in the process of writing (yet another) persistence framework
for Ruby that supports versioning and transactions: Vapor.
The base functionality as an Object Repository is roughly done and
it has reached a state where it can actually played with, so I'd like to
release it to the public to get some feedback.

http://www.cip.informatik.uni-muenchen.de/~bolzer/vapor/

Vapor is being developed at the University of Munich's Department for
Informatics as storage backend for an ongoing project to better manage
network elements (including User and Accounts) of the department network.
As such, the missing features will definetly be implemented in the next
months.


From the README:

Description
-----------

 Vapor is a persistent Object-Repository for Ruby, providing transparent
 persistence of interrelated Ruby application objects to a PostgreSQL database. 
 It's goal is to provide developers with an easy-to-use framework for
 persistence, that is consistent with OO design and does not interfere with
 the code of classes that are to be persistently stored. Vapor does not require
 any knowledge about relational databases to be used, so that developers can
 concentrate on the task of writing their application logic.
        
 Some of Vapor's general design was inspired by the JDO (Java Data Objects)
 standard.

Features
--------

  * Object-Oriented API
  * transparent to persistable classes
  * support for inheritance
  * flexible queries for object retrieval
  * generation of human-readable RDBMS schema
  * metadata specification through separate XML markup
  * concurrent access by multiple users
  * uniqueness constrains

Planned:

  * Transactions (ACID) with rollback support
  * Versioning with complete audit trail
  * Long Transactions (for Workflow-support, as branches in versioning)
  * more backends (other RDBMS, local files,...)

-------

It has some dependencies, notably Ruby-DBI from CVS (for Array support
in DBD::Pg, patch included in Vapor's tar-ball).

Documentation is still only VERY basic, but Code examples on how to use Vapor 
are linked to from the web page.

Any feedback or suggestions will be appreciated.

-- 
	Oliver M. Bolzer
	oliver / gol.com

GPG (PGP) Fingerprint = 621B 52F6 2AC1 36DB 8761  018F 8786 87AD EF50 D1FF