hold 1.0.1
A persistence library based more closely on the repository model. Used in production for several years. To summarize, the idea is that * You have Repositories which are responsible for persisting objects in a data store * Your data objects know nothing about persistence. They are just 'plain old' in-memory ruby objects can be created and manipulated independently of any particular repository. This is a substantially different approach to the widely used ActiveRecord pattern. Of course there are various trade-offs involved when choosing between these two approaches. ActiveRecord is a more lightweight approach which is often preferred for small-to-mid-sized database-backed web applications where the data model is tightly coupled to a database schema; whereas Repositories start to show benefits when it comes to, e.g.: * Separation of concerns in a larger system; avoiding bloated model classes with too many responsibilities * Ease of switching between alternative back-end data stores, e.g. database-backed vs persisted-in-a-config-file vs persisted in-memory. In particular, this can help avoid database dependencies when testing * Systems which persist objects in multiple data stores -- e.g. in a relational database, serialized in a key-value cache, serialized in config files, ... * Decoupling the structure of your data model from the schema of the data store used to persist it