Sha256: 3c5ff673a9255afbb9972fcb892336d212df2b1bc7fe306d3f2e1a6ac6a13917
Contents?: true
Size: 1.74 KB
Versions: 6
Compression:
Stored size: 1.74 KB
Contents
require 'json' module Yoda module Store module Adapters # An adapter implementation to store object in memory. # This implementation losts data on exit and we recommend to use this adapter only for test. class MemoryAdapter < Base class << self def for(path) @pool ||= {} @pool[path] || (@pool[path] = new(path)) end def type :memory end end # @return [Hash{String => String}] attr_reader :db # @param path [String, nil] represents the path to store db. def initialize(path = nil) @path = path @db = {} end # @param address [String] # @return [any] def get(address) JSON.load(db[address.to_s], symbolize_names: true) end # @param data [Enumerator<(String, Object)>] # @param bar [#increment, nil] def batch_write(data, bar) data.each do |(k, v)| put(k, v) bar&.increment end end # @param address [String] # @param object [Object] # @return [void] def put(address, object) db[address.to_s] = object.to_json end # @param address [String] # @return [void] def delete(address) db.delete(address.to_s) end # @param address [String] # @return [true, false] def exist?(address) db.member?(address.to_s) end # @return [Array<String>] def keys db.keys end def stats "No stats" end def clear db.clear end def sync end end end end end
Version data entries
6 entries across 6 versions & 1 rubygems