class Gemmy::Components::Cache
Public Class Methods
new(db_name, hash={})
click to toggle source
# File lib/gemmy/patches_loaded/components/cache.rb, line 16 def initialize(db_name, hash={}) cache_path = self.class.setup_cache_folder @db = hash.persisted "#{cache_path}/#{db_name}.yaml" # copy db state into memory @db.data.each { |k,v| self[k] = v.deep_dup } end
setup_cache_folder()
click to toggle source
# File lib/gemmy/patches_loaded/components/cache.rb, line 8 def self.setup_cache_folder cache_path = ENV["GEMMY_CACHE_PATH"] || "#{home}/gemmy/caches" unless Dir.exists?(cache_path) `mkdir -p #{cache_path}` end cache_path end
Public Instance Methods
clear()
click to toggle source
# File lib/gemmy/patches_loaded/components/cache.rb, line 68 def clear each_key &m(:delete) @db.clear end
data()
click to toggle source
# File lib/gemmy/patches_loaded/components/cache.rb, line 32 def data @db.data end
dig_delete(*keys)
click to toggle source
Delete functions like “dig_delete” I.e. if given a few keys as arguments, it will treat only the last as a delete key and all the rest as dig keys.
# File lib/gemmy/patches_loaded/components/cache.rb, line 47 def dig_delete(*keys) @db.dig_delete *keys key_to_delete = keys.pop if keys.empty? self.delete key_to_delete else self.dig(*keys).delete key_to_delete end end
get(*keys)
click to toggle source
# File lib/gemmy/patches_loaded/components/cache.rb, line 40 def get(*keys) @db.dig *keys end
get_or_set(*keys, &blk)
click to toggle source
# File lib/gemmy/patches_loaded/components/cache.rb, line 23 def get_or_set(*keys, &blk) result = get(*keys) if result.blank? result = blk.call set(*keys, result) end result end
keys()
click to toggle source
# File lib/gemmy/patches_loaded/components/cache.rb, line 36 def keys @db.data.keys end
set(*keys, val)
click to toggle source
# File lib/gemmy/patches_loaded/components/cache.rb, line 63 def set(*keys, val) Gemmy.patch("hash/i/bury").bury(self, *keys, val) @db.set(*keys, val) end
set_state(hash)
click to toggle source
# File lib/gemmy/patches_loaded/components/cache.rb, line 57 def set_state(hash) @db.set_state hash each_key &m(:delete) deep_merge! hash end