Class: Zephira::Tools::MemoryStore

Inherits:
Object
  • Object
show all
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

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

Returns:

  • (Boolean)


42
43
44
# File 'lib/zephira/tools/memory_store.rb', line 42

def self.key?(key)
  load.key?(key)
end

.keysObject



46
47
48
# File 'lib/zephira/tools/memory_store.rb', line 46

def self.keys
  load.keys
end

.loadObject



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