class Trocla::Stores::Moneta

the default moneta based store

Attributes

moneta[R]

Public Class Methods

new(config,trocla) click to toggle source
Calls superclass method Trocla::Store::new
# File lib/trocla/stores/moneta.rb, line 4
def initialize(config,trocla)
  super(config,trocla)
  require 'moneta'
  # load expire support by default
  adapter_options = { :expires => true }.merge(
                        store_config['adapter_options']||{})
  @moneta = Moneta.new(store_config['adapter'],adapter_options)
end

Public Instance Methods

close() click to toggle source
# File lib/trocla/stores/moneta.rb, line 13
def close
  moneta.close
end
formats(key) click to toggle source
# File lib/trocla/stores/moneta.rb, line 21
def formats(key)
  r = moneta.fetch(key)
  r.nil? ? nil : r.keys
end
get(key,format) click to toggle source
# File lib/trocla/stores/moneta.rb, line 17
def get(key,format)
  moneta.fetch(key, {})[format]
end

Private Instance Methods

delete_all(key) click to toggle source
# File lib/trocla/stores/moneta.rb, line 52
def delete_all(key)
  moneta.delete(key)
end
delete_format(key,format) click to toggle source
# File lib/trocla/stores/moneta.rb, line 55
def delete_format(key,format)
  old_val = (h = moneta.fetch(key,{})).delete(format)
  h.empty? ? moneta.delete(key) : moneta.store(key,h,moneta_options(key,{}))
  old_val
end
moneta_options(key,options) click to toggle source
# File lib/trocla/stores/moneta.rb, line 60
def moneta_options(key,options)
  res = {}
  if options.key?('expires')
    res[:expires] = options['expires']
  elsif e = moneta.fetch(key, {})['_expires']
    res[:expires] = e
  end
  res
end
search_keys(key) click to toggle source
# File lib/trocla/stores/moneta.rb, line 69
def search_keys(key)
  _moneta = Moneta.new(store_config['adapter'], (store_config['adapter_options']||{}).merge({ :expires => false }))
  a = []
  if store_config['adapter'] == :Sequel
    keys = _moneta.adapter.backend[:trocla].select_order_map {from_base64(:k)}
  elsif store_config['adapter'] == :YAML
    keys = _moneta.adapter.backend.transaction(true) { _moneta.adapter.backend.roots }
  end
  _moneta.close
  regexp = Regexp.new("#{key}")
  keys.each do |k|
    a << k if regexp.match(k)
  end
  a
end
set_format(key,format,value,options) click to toggle source
# File lib/trocla/stores/moneta.rb, line 46
def set_format(key,format,value,options)
  moneta.store(key,
               moneta.fetch(key,{}).merge({ format => value }),
               moneta_options(key,options))
end
set_plain(key,value,options) click to toggle source
# File lib/trocla/stores/moneta.rb, line 33
def set_plain(key,value,options)
  h = { 'plain' => value }
  mo = moneta_options(key,options)
  if options['expires'] && options['expires'] > 0
    h['_expires'] = options['expires']
  else
    # be sure that we disable the existing
    # expires if nothing is set.
    mo[:expires] = false
  end
  moneta.store(key,h,mo)
end