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
|