All Versions
Latest Version
Avg Release Cycle
62 days
Latest Release
3455 days ago

Changelog History
Page 2

  • v0.7.0 Changes

    June 21, 2013
    • โž• Add Perpetuity::RailsModel, an ActiveModel-compliant mixin
    • ๐Ÿš… Check Rails app directory for mappers dynamically if the mapper registry is missing a particular model class
  • v0.6.2 Changes

    • ๐Ÿ‘‰ Make sure Retrieval#first limits the query to a single item
    • โž• Add Mapper#sample/Retrieval#sample
    • โž• Add Retrieval#drop to allow skipping a specific number of objects
  • v0.6.1 Changes

    • ๐Ÿ›  Fix reference equality bug
  • v0.6.0 Changes

    • ๐ŸŽ Stop extending persisted/retrieved objects with Perpetuity::PersistedObject. Extending these objects invalidates method caches inside the VM, which degrades performance.
    • 0๏ธโƒฃ Cache all objects returned from Mapper#find(id) by default into the mapper object. This can be bypassed with Mapper#find(id, false)
    • Do not store uninitialized attributes with the MongoDB serializer. This shrinks the size of documents when possible.
  • v0.5.0 Changes

    • ๐Ÿ‘ Allow querying based on referenced class/id or embedded-object data
    • โœ‚ Remove duplicate references when loading associations on referenced objects
    • โšก๏ธ Optimize loading associations with zero/one/many objects. It is similar to Array#detect vs Array#select. detect is faster if you only need one.
    • ๐Ÿ›  Fixed a bug in defining methods on generated mapper classes which would mistakenly define them on the class instead of the mapper objects
    • โž• Add none?/one?/all?/any? methods to mappers.
    • โž• Add block functionality to Mapper#count, similar to Enumerable#count
    • Alias Mapper#find_all to Mapper#select
    • Alias Mapper#detect to Mapper#find
    • โž• Add Mapper#reject method to negate queries
    • ๐Ÿ‘ Allow Mapper#find to take a block like Mapper#select
    • โž• Add atomic incrementation
  • v0.4.8 Changes

    • ๐Ÿ”ง Provide configuration one-liner ability for simple configs
    • ๐Ÿ“ Memoize results for Retrieval objects
    • Retrieval#count sends a count query rather than retrieving the result set and returning the count of the array
    • ๐Ÿ‘ Allow updating of objects that contain Perpetuity::References to other persisted objects without first loading the association
    • ๐Ÿ›  Fix bug preventing objects with an array of referenced objects from being updated
    • ๐Ÿšš Move serialization into the MongoDB adapter, allowing future adapters to implement their own serializations
  • v0.4.7 Changes

    • Use instance variables rather than attr_readers in IdentityMap (avoids calling methods during load_association!).
    • ๐Ÿ›  Fixed a bug with MongoDB authentication.
    • ๐Ÿ‘‰ Use attribute names rather than a stringified attribute for MongoDB indexes.
    • ๐Ÿ›  Fixed a bug with deserializing attributes of namespaced classes. โ€” Jaap Groeneveld
    • ๐Ÿ›  Fixed serialization of Perpetuity::Reference attributes caused by resaving an object that did not have all of its referenced associations loaded.
  • v0.4.6 Changes

    • ๐Ÿ›  Fix an inconsistency between mongo and moped gems. Previously, the MongoDB adapter relied on the fail-fast behavior of the mongo gem so we had no need to check for errors. Moped does not do that by default, which resulted in incorrect behavior of the gem when an object was not persisted.
    • ๐Ÿ’Ž The Mapper#select DSL now allows the use of != as criteria. Not all supported Ruby implementations allowed that operator to be overridden when the DSL was created, but they do now.
  • v0.4.5 Changes

    • ๐ŸŽ Move from the mongo gem from 10gen to the moped gem for talking to MongoDB. This resulted in performance gains of 30-80%, depending on query size.
    • ๐Ÿ‘‰ Make persisted objects marshalable.
      • Previously, the id method was defined on individual objects that were either persisted to or retrieved from the DB. This made them unable to be marshaled with Marshal.dump.
      • Now we extend the objects with Perpetuity::PersistedObject to keep them marshalable while still providing id. This keeps them marshalable (unmarshalled objects will still be extended with Perpetuity::PersistedObject).
    • ๐Ÿ‘€ Provided a partial fix for a bug that kept us from being able to persist hash attributes properly. See the first comments in the linked GitHub issue for an explanation of why it is only a partial fix.
    • โœ… Stopped testing on MRI 1.9.2 with Travis CI. Moped requires 1.9.3 or higher.
  • v0.4.4 Changes

    • Automatically persist all referenced objects if they are not already persisted. Previously, referenced objects were required to be persisted before persisting the referencing object.