Class: Yoda::Store::Adapters::MemoryAdapter

Inherits:
Base
  • Object
show all
Defined in:
lib/yoda/store/adapters/memory_adapter.rb

Overview

An adapter implementation to store object in memory. This implementation losts data on exit and we recommend to use this adapter only for test.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

#inspect

Constructor Details

#initialize(path = nil) ⇒ MemoryAdapter

Returns a new instance of MemoryAdapter.

Parameters:

  • path (String, nil) (defaults to: nil)

    represents the path to store db.



24
25
26
27
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 24

def initialize(path = nil)
  @path = path
  @db = {}
end

Instance Attribute Details

#dbHash{String => String} (readonly)

Returns:

  • (Hash{String => String})


21
22
23
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 21

def db
  @db
end

Class Method Details

.for(path) ⇒ Object



10
11
12
13
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 10

def for(path)
  @pool ||= {}
  @pool[path] || (@pool[path] = new(path))
end

.typeObject



15
16
17
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 15

def type
  :memory
end

Instance Method Details

#batch_write(data, bar) ⇒ Object

Parameters:

  • data (Enumerator<(String, Object)>)
  • bar (#increment, nil)


37
38
39
40
41
42
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 37

def batch_write(data, bar)
  data.each do |(k, v)|
    put(k, v)
    bar&.increment
  end
end

#clearObject



82
83
84
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 82

def clear
  db.clear
end

#delete(address) ⇒ void

This method returns an undefined value.

Parameters:

  • address (String)


53
54
55
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 53

def delete(address)
  db.delete(address.to_s)
end

#empty?Boolean

Returns:

  • (Boolean)


74
75
76
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 74

def empty?
  db.empty?
end

#exist?(address) ⇒ true, false

Parameters:

  • address (String)

Returns:

  • (true, false)


59
60
61
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 59

def exist?(address)
  db.member?(address.to_s)
end

#get(address) ⇒ any

Parameters:

  • address (String)

Returns:

  • (any)


31
32
33
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 31

def get(address)
  JSON.load(db[address.to_s], symbolize_names: true)
end

#keysArray<String>

Returns:

  • (Array<String>)


70
71
72
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 70

def keys
  db.keys
end

#namespace(name) ⇒ MemoryAdapter

Parameters:

  • name (String)

Returns:



65
66
67
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 65

def namespace(name)
  namespaces[name.to_s] ||= MemoryAdapter.new
end

#persistable?Boolean

Returns:

  • (Boolean)


89
90
91
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 89

def persistable?
  false
end

#put(address, object) ⇒ void

This method returns an undefined value.

Parameters:

  • address (String)
  • object (Object)


47
48
49
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 47

def put(address, object)
  db[address.to_s] = object.to_json
end

#statsObject



78
79
80
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 78

def stats
  "No stats"
end

#syncObject



86
87
# File 'lib/yoda/store/adapters/memory_adapter.rb', line 86

def sync
end