Module: Gemmy::Patches::HashPatch::PersistedHash
- Defined in:
- lib/gemmy/patches/hash_patch.rb
Overview
Helper methods for the persistence patch
Instance Method Summary collapse
- #clear ⇒ Object
- #data ⇒ Object
-
#dig_delete(*keys) ⇒ Object
Delete functions like “dig_delete” I.e.
- #get(*keys, disk: true) ⇒ Object
- #set(*keys, val) ⇒ Object
-
#set_state(hash) ⇒ Object
This won’t autovivify the hash automatically.
Instance Method Details
#clear ⇒ Object
382 383 384 385 386 |
# File 'lib/gemmy/patches/hash_patch.rb', line 382 def clear autovivified = Gemmy.patch("hash/i/autovivified")\ .method(:_autovivified) @store.transaction { @store[:data] = autovivified.call({}) } end |
#data ⇒ Object
355 356 357 |
# File 'lib/gemmy/patches/hash_patch.rb', line 355 def data @store.transaction { @store[:data] } end |
#dig_delete(*keys) ⇒ Object
Delete functions like “dig_delete” I.e. if given a few keys as arguments, it will treat only the last as a delete key and all the rest as dig keys.
362 363 364 365 366 367 368 369 370 371 372 373 374 375 |
# File 'lib/gemmy/patches/hash_patch.rb', line 362 def dig_delete(*keys) key_to_delete = keys.pop if keys.empty? delete key_to_delete @store.transaction do @store[:data].delete key_to_delete end else dig(*keys).delete key_to_delete @store.transaction do @store[:data].dig(*keys).delete key_to_delete end end end |
#get(*keys, disk: true) ⇒ Object
342 343 344 |
# File 'lib/gemmy/patches/hash_patch.rb', line 342 def get(*keys, disk: true) disk ? @store.transaction { @store[:data].dig(*keys) } : dig(*keys) end |
#set(*keys, val) ⇒ Object
346 347 348 349 350 351 352 353 |
# File 'lib/gemmy/patches/hash_patch.rb', line 346 def set(*keys, val) bury = Gemmy::Patches::HashPatch::InstanceMethods::Bury.method(:bury) bury.call(self, *keys, val) @store.transaction do bury.call(@store[:data], *(keys + [val])) end val end |
#set_state(hash) ⇒ Object
This won’t autovivify the hash automatically
378 379 380 |
# File 'lib/gemmy/patches/hash_patch.rb', line 378 def set_state(hash) @store.transaction { @store[:data] = hash } end |