[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

[ANN] Vapor 0.80, now supports object versioning

Oliver M. Bolzer

11/19/2003 3:57:00 PM

Hi!

I'm happy to announce the release of Vapor 0.80. This release fixes lots
of nasy bugs and adds support for object versioning. On each transaction
commit, a new version of each modified object is created and the old
version kept for later audit or recovery. Additionally, all transactions
are logged with a committer, commit message and a list of objects
modified in the transaction.

As for now, versioning is unconditionally on for all classes, but in
the next release, the user will be able to choose if he wants versioning
or not per-class.

A 1.0 release is getting closer, but this is still beta-software. Some
refactoring and clean ups are still neccersary and the on-disk format
will likely change again. Nevertheless, I really want this release to be
tested by as many interested developers as possible. Feed back and
suggestions regarding the semantics and API are most welcome.

Below are excerpts from the CHANGES and TODO files.
For details and code snippets of the new features see Vapor's webpage
at http://vapor.ruby...

Version 0.80 (tagged 19 Nov 2003, revision 275)

Features:
* transaction logging, record information about time, committer and log
message as well as list of objects modified per transaction
* basic versioning support, retrieval of historic object states
* vaporadmin: removal of classes and all their instances using the
* "remove" command
* vaporadmin: modification of class' metadata using the "update"
* command
* new operator (~) for wildcard searches on Strings

Bug Fixes:
* allow SQL keywords as names of persistent attributes
* fix bug where camelCase variables would not be correctly set on
* object loading
* correctly transfer newly persistent objects back to transient state
* during
rollback(). This bug caused incomprehensible ObjectDeletedErrors when
manually
or automatically rolling back.
* check REXML::Version instead of REXML::VERSION_MAJOR, which does not
* exist
in the REXML version that is included in Ruby 1.8
* minimize number of warnings issued when using `ruby -w', including
* those
from Ruby 1.8.x, that are issued regardless of -w

Incompatible Repository Changes: (Repository needs to be recreated from
scratch)
* repository schema version 3
* add fields and tables for versioning

TODO:
=====

0.90
User Visible:
- make versioning optinal, specified for each class individually
- literals in search queries
- case insensitive searchs / regular expressions ?
- improve documentation by writing a proper user's guide
- prefix all methods of Persistable with vapor_ ? keep current names as
alias ?

Internal:
- refactor object being passed from TupleManager to PersistenceManager
to use a custom class instead of a Hash with special keys
- create new class for metadata and store it as a Persistable instead
of special treatment
- use Test::Unit::Mock istead of Mock

1.00
- do some benchmarking and profiling, simple improvements
- maybe: use Ruby 1.8 features, drop support for Ruby 1.6
- get tested by as many people as possible
- documentation, examples, documentation, documentation and
documentation

post-1.0
- backends for other databases like MySQL and Oracle
- support for long-transactions in form of versioning-branches
- maintain backwards-compatibility for database schema or provide
migration path

--
Oliver M. Bolzer
oliver@gol.com

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