Class: Zephira::Tools::MemoryStore
- Inherits:
-
Object
- Object
- Zephira::Tools::MemoryStore
- Defined in:
- lib/zephira/tools/memory_store.rb
Overview
Shared YAML-backed key/value store used by the memory_* tools. Values are always strings; loaded with safe_load to refuse arbitrary object deserialization since memory is agent/user-supplied content.
Constant Summary collapse
- PATH =
".zephira/memory.yml"
Class Method Summary collapse
- .delete(key) ⇒ Object
- .key?(key) ⇒ Boolean
- .keys ⇒ Object
- .load ⇒ Object
- .read(key) ⇒ Object
- .save(memory) ⇒ Object
- .write(key, value) ⇒ Object
Class Method Details
.delete(key) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/zephira/tools/memory_store.rb', line 34 def self.delete(key) memory = load return false unless memory.key?(key) memory.delete(key) save(memory) true end |
.key?(key) ⇒ Boolean
42 43 44 |
# File 'lib/zephira/tools/memory_store.rb', line 42 def self.key?(key) load.key?(key) end |
.keys ⇒ Object
46 47 48 |
# File 'lib/zephira/tools/memory_store.rb', line 46 def self.keys load.keys end |
.load ⇒ Object
14 15 16 17 |
# File 'lib/zephira/tools/memory_store.rb', line 14 def self.load return {} unless ::File.exist?(PATH) YAML.safe_load_file(PATH) || {} end |
.read(key) ⇒ Object
24 25 26 |
# File 'lib/zephira/tools/memory_store.rb', line 24 def self.read(key) load[key] end |
.save(memory) ⇒ Object
19 20 21 22 |
# File 'lib/zephira/tools/memory_store.rb', line 19 def self.save(memory) ::FileUtils.mkdir_p(::File.dirname(PATH)) ::File.write(PATH, memory.to_yaml) end |
.write(key, value) ⇒ Object
28 29 30 31 32 |
# File 'lib/zephira/tools/memory_store.rb', line 28 def self.write(key, value) memory = load memory[key] = value save(memory) end |