class Moneta::Adapters::DataMapper
Datamapper backend @api public
Public Class Methods
new(options = {})
click to toggle source
@param [Hash] options @option options [String] :setup Datamapper setup string @option options [String/Symbol] :repository (:moneta) Repository name @option options [String/Symbol] :table (:moneta) Table name
# File lib/moneta/adapters/datamapper.rb, line 31 def initialize(options = {}) configure(options) Store.storage_names[config.repository] = config.table.to_s ::DataMapper.setup(config.repository, config.setup) context { Store.auto_upgrade! } end
Public Instance Methods
clear(options = {})
click to toggle source
(see Proxy#clear
)
# File lib/moneta/adapters/datamapper.rb, line 90 def clear(options = {}) context { Store.all.destroy! } self end
create(key, value, options = {})
click to toggle source
(see Proxy#create
)
# File lib/moneta/adapters/datamapper.rb, line 67 def create(key, value, options = {}) context do Store.create(k: key, v: value) true end rescue # FIXME: This catches too many errors # it should only catch a not-unique-exception false end
delete(key, options = {})
click to toggle source
(see Proxy#delete
)
# File lib/moneta/adapters/datamapper.rb, line 79 def delete(key, options = {}) context do if record = Store.get(key) value = record.v record.destroy! value end end end
key?(key, options = {})
click to toggle source
(see Proxy#key?
)
# File lib/moneta/adapters/datamapper.rb, line 39 def key?(key, options = {}) context { Store.get(key) != nil } end
load(key, options = {})
click to toggle source
(see Proxy#load
)
# File lib/moneta/adapters/datamapper.rb, line 44 def load(key, options = {}) context do record = Store.get(key) record && record.v end end
store(key, value, options = {})
click to toggle source
(see Proxy#store
)
# File lib/moneta/adapters/datamapper.rb, line 52 def store(key, value, options = {}) context do if record = Store.get(key) record.update(k: key, v: value) else Store.create(k: key, v: value) end value end rescue tries ||= 0 (tries += 1) < 10 ? retry : raise end
Private Instance Methods
context() { || ... }
click to toggle source
# File lib/moneta/adapters/datamapper.rb, line 97 def context ::DataMapper.repository(config.repository) { yield } end