SQLite/Ruby is an interface for Ruby into the SQLite database engine. It 
is only for SQLite version 2.x -- it does not (yet) support 3.x.

   http://sqlite-ruby.rubyforge.org
   http://rubyforge.org/projects/sqlite-ruby

This version is a completely rewrite of the original codebase. (Yes, 
you're probably sensing a pattern here... copland... then sqlite-ruby... 
the more I learn about Ruby, the more I realize that much of the code I 
wrote even a year ago could be done much more cleanly and concisely, and 
I so I'm working to fix those flaws.)

Futhermore, this is only a BETA RELEASE. It is probably not ready for 
production environments yet, since the API may change from release to 
release. I need people willing to put this release through its paces, to 
help me solidify it for a stable 2.1 release. If you're willing, go 
ahead and download it and start sending me suggestions (or submitting 
bug reports via the trackers on RubyForge).

So, the meat of this release:

   * The previous release used the callback-based "sqlite_exec" API. 
This was fairly fragile from Ruby's perspective, since exceptions and 
the like could result easily in locked or busy databases. This release 
moves to the compile/step/finalize API, which does not use C callback 
functions. This makes it much easier to use both internal and external 
iterators for queries. It also makes the Ruby interface much more robust.

   * "show_datatypes" is now always on (and cannot be changed), since it 
only applied to the "sqlite_exec" interface.

   * Type translators are now registered per database instance, instead 
of globally. This allows multiple databases to exist with different 
translators for the same datatypes.

   * The interface has been broken apart into 
Database/Pragma/Statement/ResultSet responsibilities.

   * Better metadata querying.

   * Better (and more) unit tests.

   * Rows are returned as arrays by default, instead of hashes, but rows 
as hashes are still supported (see Database#results_as_hash).

Support for Ara's "arrayfields" module remains implicit. If you require 
the arrayfields module before doing a query, then the rows that returned 
may be indexed by column name (like a hash) or iterated through by index 
(like an array).

Lastly: some of you may be wondering why I still bother with the older 
2.x interface for SQLite, given that the 3.x interface is almost out of 
beta. Three reasons: one, I'm familiar with it. Two, there are still 
alot  of people that use 2.x databases. Three, a Ruby interface for 
SQLite3 is forthcoming--watch this space!

-- 
Jamis Buck
jgb3 / email.byu.edu
http://www.jamisbuck.org/jamis

"I use octal until I get to 8, and then I switch to decimal."