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 24 def initialize(options = {}) raise ArgumentError, 'Option :setup is required' unless options[:setup] @repository = (options.delete(:repository) || :moneta).to_sym Store.storage_names[@repository] = (options.delete(:table) || :moneta).to_s ::DataMapper.setup(@repository, options[:setup]) context { Store.auto_upgrade! } end
Public Instance Methods
clear(options = {})
click to toggle source
(see Moneta::Proxy#clear)
# File lib/moneta/adapters/datamapper.rb, line 84 def clear(options = {}) context { Store.all.destroy! } self end
create(key, value, options = {})
click to toggle source
(see Moneta::Proxy#create)
# File lib/moneta/adapters/datamapper.rb, line 61 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 Moneta::Proxy#delete)
# File lib/moneta/adapters/datamapper.rb, line 73 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 Moneta::Proxy#key?)
# File lib/moneta/adapters/datamapper.rb, line 33 def key?(key, options = {}) context { Store.get(key) != nil } end
load(key, options = {})
click to toggle source
(see Moneta::Proxy#load)
# File lib/moneta/adapters/datamapper.rb, line 38 def load(key, options = {}) context do record = Store.get(key) record && record.v end end
store(key, value, options = {})
click to toggle source
(see Moneta::Proxy#store)
# File lib/moneta/adapters/datamapper.rb, line 46 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 91 def context ::DataMapper.repository(@repository) { yield } end