I've just released Lafcadio 0.4.0, which is the new production
release.

http://lafcadio.rubyforge.org/

If you don't know what Lafcadio is, it's an object-relational mapping
library for MySQL and Ruby. Its features include:

* A test-centric design that allows you extensively unit test any
program that runs on top of Lafcadio. It comes with a MockObjectStore,
which mimics the database and allows you to test database interactions
without all the annoying setup code of a real database-driven test.
* A block-driven querying language that will cover 99% of the ad-hoc
queries you have to do. These queries look like:

  child_users = object_store.getUsers { |user| user.age.lt( 18 ) }

These queries can be run against the MockObjectStore, meaning they can
be unit-tested.
* In-Ruby triggers that can be written per domain class. These
triggers can be tested, too!
* Lafcadio makes very few assumptions of how your database was setup,
and comes complete with a lot of hooks to allow you to fit your
pre-existing database. Because programming's a messy job, and we're
always cleaning up after somebody's mistakes (even if they were our
own).

Lafcadio is production-ready and runs a number of websites, including
Rhizome.org, which more than 3 million hits a month.

0.4.0 contains a number of new features over the previous stable
releases:

* Optimizations which cache retrievals intelligently, and do lazy
evaluation of individual fields for cases in which you load rows that
have many fields but you only care about a few.
* A new syntax for ad-hoc querying which gives you a lot of expressive
power with much less typing than before.
* A lot less unnecessary code, and a lot more documentation for the
code that remains.
* The option to define domain class fields in an external XML file.
* Lafcadio now uses DBI instead of Ruby/MySQL.
* Lafcadio uses log4r for SQL logging.

There are a lot of small changes, and a number of warnings for those
migrating forward from Lafcadio 0.2.x. Please read the changelog for
full details.

Francis