OPOD is a data persistance system that supports a variety of backend adapters. Unlike an ORM, Opod is persistant variable system. It can store any type of data as long as it can be serialized. The serialization format is adaptable too. By default it uses Ruby's own Marshal system, but can alternatively use YAML, JSON, et al.

Baclend adapters are easy to write. Generally they are less than 100 lines of coode. Currently built-in stores include: Memory, File, PStore, Og, drb.

Examples are pretty obvious -- no great mystery at the these depths:

      mc = Opod::Memory.new('Mr. Bubbles')

      mc['note'] = "I will not be forgotten!"

... after the jump ...

      mc = Opod['Mr. Bubbles']

      mc['note'] #=> "I will not be forgotten!"

Persistance stores can be named anything. In fact the key to a store can be any object, just like a Hash key.

Opod is an off-shoot of Nitro.