[ANN] Vapor 0.80, now supports object versioning

O

Oliver M. Bolzer

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.rubyforge.org/

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,579
Members
45,053
Latest member
BrodieSola

Latest Threads

Top