version 0.2.6 * Rhubarb now supports starting arbitrary Ruby objects to fields of type :object --- these are serialized to yaml and gzipped before they enter the database. At the moment, you cannot change such an object in place (accessing a field of type :object will return a frozen object); to change the value of an object field you must dup and reassign. This will probably change in a future release. * Rhubarb now supports storing gzipped blobs in fields of type :zblob. version 0.2.5 * Prepared statements are now optional to eliminate a strange bug that appears in some environments. If you experience unusual table locking errors, try running without prepared statements. version 0.2.4 * More aggressive use of prepared statements, which should result in more speedups. (In particular, finding tuples by identity now uses a prepared statement.) * Persisting#to_hash method added. * delete_where method added to persisting classes; it enables deleting many rows satisfying some criterion in a single query. version 0.2.3 (20bee926a142d505441716762a72a82cbfb87378) * Rhubarb now uses prepared statements almost exclusively. This should result in an appreciable speedup (I observed around 10% on the test suite; a large rhubarb-based application I have previously spent over 12% of runtime preparing one-off statemtents). * Fixed a crashing bug introduced in 0.2.2. version 0.2.2 (8859efbbbca5e80d64e3bd8e6e5ba2ffd8a3e83d) * explicit support for :blob-typed columns (blob values will be appropriately stored in create statements and attribute assignments). Note that it is still not possible to search for rows based on the value in a blob-valued column. * equality and hash methods (both based on class and row identity). version 0.2.1 (97339238fbca0116b686f64343d479d15af8a03f) * Code cleanups * Performance improvements * Rhubarb now no longer uses explicit transactions internally. I have become convinced that Rhubarb's use of transactions was overly cautious; removing these enables Rhubarb users to use transactions in their own code. version 0.2.0 (eecc7cceda993ea9c20cd952aa709ebe470a9f3d) * First standalone release of Rhubarb. Previous releases are included with SPQR. * Managed classes that use the non-default db will respect assignments to the db class field, even if it occurs before the call to create_table. This should simplify some client code. version 0.1.4 (f24baeafb0fe88e09c232acac3891d11771325a9) * 0.1.3 introduced a compatibility issue with previous versions of Rhubarb. These should be resolved here. version 0.1.3 (c5c095db4d5f22d0fff6633237859cd33a319884) * This is a release featuring only minor enhancements to Rhubarb. If you don't use Rhubarb, there is no need to upgrade. * Rhubarb classes now support a delete_all method. * Rhubarb now supports multiple backend databases, via an extra parameter to Persistence::open and to the create_table class methods. Note that it is not currently possible to have one class backed by multiple databases. version 0.1.2 (2c45fd4d693a396e9206607a6f053b1eb4696272) * Enhancements to SPQR/Rhubarb interoperability. (Rhubarb row_ids are now used for half of the QMF object ID). * Enhancements to app skeleton class: now allows specifying username, password, hostname, and port in the constructor to SPQR::App. version 0.1.1 (85c87b1239f730374d47e2d8baf795c8c69050f4) * Other minor Rhubarb fixes. * Rhubarb now properly handles persisting classes declared in different modules and supports defining custom table names. * spqr-gen now has preliminary support for generating classes that persist via rhubarb. * Fixes and cleanups to class- and package-name metadata. Previously, the app skeleton would fail to find some manageable classes declared in separate Ruby modules. In addition, the manageable mixin now sets sensible default names for the QMF class and package (when one is not provided within the class declaration). version 0.1.0 (3a3ca52c4f086d1f20fdf5ed89dda262622c171d) * Note that this version breaks backwards compatibility, for reasons mentioned below. Most notably, the Manageable API names have changed, and the old-style exposed-method declarations (with hash args) are no longer supported in favor of a more idiomatic style. * Exposed methods now use idiomatic parameter-passing style: input (and in/out) parameters are passed in to methods by name (in the order that they appear in the expose declaration), and output (and in/out) values are returned in a list via a standard return statement. (Again, the order of output and in/out parameters is specified by the order that they appear in the expose declaration.) * Code generation now uses idiomatic parameter-passing style. Code generation should still be considered "alpha"-quality. * Changed mixed-in method names from Manageable. version 0.0.4 (180897a77b55400b31d364a08cb9f81c423eb59f) * Test suite is mainly stable (individual tests will sometimes hang upon creating a QMF agent). * This is probably the last version before I change the method call API. version 0.0.3 (060c7b5bcaa2711b3e3ce511c9c3ecaa59bf0de8) * Agent-ready callback and parent-process notification (app.rb) * The beginnings of an SPQR test suite version 0.0.2 (ecd94b141307c5f0f141833836ea686854cfda9c) * First shaky pass at automated RPM packaging (see rpmspec and srpm rake targets) * Automatic find_all methods for Rhubarb persisting classes version 0.0.1 (0714a87f30469772fc302515e95576e329f7deb9) * Gem support * Codegen fixes version 0.0.0 (bbbc2e9d6983f773f6d093a821a0e635714ea869) * Initial numbered release; corresponds roughly to the functionality from the "Introducing SPQR" blog posts, but with an added Rakefile.