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
search(key)
click to toggle source
# File lib/trocla/stores/moneta.rb, line 26 def search(key) raise 'The search option is not available for any adapter other than Sequel or YAML' unless store_config['adapter'] == :Sequel || store_config['adapter'] == :YAML r = search_keys(key) r.empty? ? nil : r 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