This was originally written in gemmy but was extracted to a gem.
It's on rubygems. To install gem install persisted_hash
and require 'persisted_hash'
as expected.
There are three potential ways to create a 'persisted hash':
- via a global patch on hash
- via a scoped refinement on hash
- functionally, via class method
Globally:
Hash.include PersistedHash
hash = {}.persisted("path.yaml")
Refinements:
class MyClass
using PersistedHash
hash = {}.persisted("path.yaml")
end
Functionally:
hash = PersistedHash.new({})
The API to interact with the persisted hash is as follows:
get(*keys)
readsset(*keys)
writesdata
get allset_state(hash)
overwriteclear
empty
The persisted object inherits from hash, so methods like []
can still be called.
They'll just work on the in-memory version, though.