Sha256: 11d8276e26fb0436af729e21fb85ddec11f9f6f3129ffeb3af79f204c0bf1b0e
Contents?: true
Size: 1.87 KB
Versions: 1
Compression:
Stored size: 1.87 KB
Contents
require_relative "prefatory/version" require_relative 'prefatory/config' require_relative 'prefatory/errors' require_relative 'prefatory/storage/discover' module Prefatory # A repository that temporarily saves ruby objects to a key value store (Redis or Memcached). class Repository KEY_NOT_FOUND_MSG = "Unable to find the object with key ?" def initialize(key_prefix: nil, storage: nil, config: Prefatory.config) @config = config @storage = storage || Storage::Discover.new(@config.storage, @config.ttl).instance end def find(key) return nil unless @storage.key?(key) @storage.get(key) end def find!(key) raise Errors::NotFound, KEY_NOT_FOUND_MSG.sub('?',key) unless @storage.key?(key) obj = find(key) obj end def save(obj, ttl=nil) begin key = @storage.next_key(obj) @storage.set(key, obj, ttl) rescue StandardError => e logger.info("An error occurred (#{e.inspect}) storing object: #{obj.inspect}") key = nil end key end def save!(obj, ttl=nil) key = save(obj, ttl) raise Errors::NotSaved, "Unable to save object! #{obj.inspect}. Check the log for more information." unless @storage.key?(key) key end def update(key, obj, ttl=nil) return false unless @storage.key?(key) @storage.set(key, obj, ttl) true end def update!(key, obj, ttl=nil) raise Errors::NotFound, KEY_NOT_FOUND_MSG.sub('?',key) unless @storage.key?(key) update(key, obj, ttl) end def delete(key) return false unless @storage.key?(key) @storage.delete(key) true end def delete!(key) raise Errors::NotFound, KEY_NOT_FOUND_MSG.sub('?',key) unless @storage.key?(key) delete(key) end private def logger @config.logger end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
prefatory-0.1.2 | lib/prefatory.rb |