Files | Admin

Notes:

Release Name: 0.8.0

Notes:
Lafcadio 0.8.0 contains more than 40 new features and bugfixes. This release
adds lots of convenience methods to DomainObject, richer query inference
operators, real-time query subset caching -- all in a slimmer codebase.


Changes: * WARNING: changed various field class names to be more Ruby-ish: TextField to StringField, LinkField to DomainObjectField, DecimalField to FloatField, and SubsetLinkField to SubsetDomainObjectField * WARNING: extracted QueueHash, Ruby Month, USCommerce, English Extensions, and ContextualService into separate libraries * WARNING: changed DomainObject one-line directive from "link field_name { 'linked_type' => linked_type }" to "link linked_type, [ field_name ], [{ other_args }]" * WARNING: changed dynamic methods like Client.get_invoices to Client.invoices * @original_values hash available inside of DomainObject, for use in triggers * Query::In works for text fields, too * DomainObject#get also dispatches to ObjectStore#get_filtered * you can set a default_setup_hash for a domain class' fields * DomainObject handles one-line field definitions in plural form: 'booleans', 'texts', etc. * added DomainObject.exist? * added DomainObject#delete! and #update! * added nil? operators in query inference * added MockDbBridge#set_next_pk_id; this is needed for DomainMock * Added DomainObject.all, .last, .first, .only, .[] * LafcadioTestCase uses LafcadioConfig.set_values instead of LafcadioConfig.set_filename * DomainObject.table_name defaults to underscored version of class name, not camel-case * children of ContextualService can be instantiated with parameters, and they will be cached based on those parameters * DomainObject will only do field verification if you're using the MockObjectStore; this is far more useful for testing than for live code * If you're creating a DomainObject, and the hash has a key that doesn't correspond to a field, it'll raise an error * Added DomainObject.get( pk_id ) and DomainObject.get { |dobj| ... } * You can define a domain class' field name with a Symbol or a String * DomainObject.method_missing raises the normal error * When you call ObjectStore#get_<dobj>( linked_dobj ), it looks for a link field that matches the domain class type, so you don't have to explicitly enter the field name * 'domainFiles' in LafcadioConfig can be a String or an Array * ContextualService is more restrictive about accepting methods starting with 'get_' or 'set_' * MockObjectStore#get_all will automatically order results by pk_id * LinkField sets the name to the underscored version of the domain class * ObjectStore#get_< plural domain class >( search_term ) knows to look up a link in search_term with an underscored, not camel-case name * one-line directives are underscore, not lower-case camel-case * MockObjectStore raises an error if you try to commit a domain object with a non-Integer pk_id * ObjectStore::Cache knows when one query implies another * Query::Like is case-insensitive for the MockObjectStore, just as it is in MySQL * Fixed MockObjectStore#get_max * Fixed a bug where a DomainObjectProxy couldn't get the value of the newly committed dobj inside of the post_commit_trigger * Fixed English.plural with 'axis' and 'datum' * Global methods won't interfere with DomainObject methods * DomainObject's one-liners only create fields once * fixed bug with MockObjectStore handling Query#limit. * Fixed MapObject.get_class_fields * Fixed bug with boolean query inference in Query.And or Query.Or * Fixed a bug where the MockObjectStore was incorrectly handling a query with both a limit and an order_by * fixed a bug where Query#order_by wouldn't account for a field with a different db_field_name * fixed bug where requiring lafcadio would cause an empty test case to run