Sha256: 8066b8d91d6fe9bc44f3bc07a0f4994a8fed36ad0f740e135b1ad7aed29e3918
Contents?: true
Size: 1.23 KB
Versions: 2
Compression:
Stored size: 1.23 KB
Contents
module Blobby # A store decorator that logs writes and deletes # class LoggingStore def initialize(store, store_name, logger) @store = store @store_name = store_name @logger = logger end def available? store.available? end def [](key) StoredObject.new(store[key], :on_write => -> { logger.info(%(wrote to #{key.inspect} in #{store_name})) }, :on_delete => -> { logger.info(%(deleted #{key.inspect} from #{store_name})) } ) end private attr_reader :logger attr_reader :store attr_reader :store_name class StoredObject def initialize(object, callbacks = {}) @object = object @on_write = callbacks[:on_write] || -> {} @on_delete = callbacks[:on_delete] || -> {} end def exists? @object.exists? end def read(&block) @object.read(&block) end def write(*args) @object.write(*args) @on_write.call nil end def delete deleted = @object.delete @on_delete.call if deleted deleted end private attr_reader :object attr_reader :on_write end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
blobby-1.0.1 | lib/blobby/logging_store.rb |
blobby-1.0.0 | lib/blobby/logging_store.rb |