class Moneta::Adapters::PStore
PStore
backend @api public
Public Class Methods
new(options = {})
click to toggle source
@param [Hash] options @option options [String] :file PStore
file @option options [Boolean] :threadsafe Makes the PStore
thread-safe @option options [::PStore] :backend Use existing backend instance
Calls superclass method
Moneta::Adapter::new
# File lib/moneta/adapters/pstore.rb, line 22 def initialize(options = {}) super @id = "Moneta::Adapters::PStore(#{object_id})" end
Public Instance Methods
clear(options = {})
click to toggle source
(see Proxy#clear
)
# File lib/moneta/adapters/pstore.rb, line 80 def clear(options = {}) transaction do backend.roots.each do |key| backend.delete(key) end end self end
create(key, value, options = {})
click to toggle source
(see Proxy#create
)
# File lib/moneta/adapters/pstore.rb, line 68 def create(key, value, options = {}) transaction do if backend.root?(key) false else backend[key] = value true end end end
delete(key, options = {})
click to toggle source
(see Proxy#delete
)
# File lib/moneta/adapters/pstore.rb, line 53 def delete(key, options = {}) transaction { backend.delete(key) } end
each_key() { |k| ... }
click to toggle source
(see Proxy#each_key
)
# File lib/moneta/adapters/pstore.rb, line 33 def each_key(&block) return enum_for(:each_key) { transaction(true) { backend.roots.size } } unless block_given? transaction(true) do backend.roots.each { |k| yield(k) } end self end
fetch_values(*keys, **options)
click to toggle source
Calls superclass method
Moneta::NilValues#fetch_values
# File lib/moneta/adapters/pstore.rb, line 94 def fetch_values(*keys, **options) transaction(true) { super } end
increment(key, amount = 1, options = {})
click to toggle source
(see Proxy#increment
)
# File lib/moneta/adapters/pstore.rb, line 58 def increment(key, amount = 1, options = {}) transaction do existing = backend[key] value = (existing == nil ? 0 : Integer(existing)) + amount backend[key] = value.to_s value end end
key?(key, options = {})
click to toggle source
(see Proxy#key?
)
# File lib/moneta/adapters/pstore.rb, line 28 def key?(key, options = {}) transaction(true) { backend.root?(key) } end
load(key, options = {})
click to toggle source
(see Proxy#load
)
# File lib/moneta/adapters/pstore.rb, line 43 def load(key, options = {}) transaction(true) { backend[key] } end
merge!(pairs, options = {})
click to toggle source
Calls superclass method
Moneta::NilValues#merge!
# File lib/moneta/adapters/pstore.rb, line 102 def merge!(pairs, options = {}) transaction { super } end
slice(*keys, **options)
click to toggle source
Calls superclass method
Moneta::NilValues#slice
# File lib/moneta/adapters/pstore.rb, line 98 def slice(*keys, **options) transaction(true) { super } end
store(key, value, options = {})
click to toggle source
(see Proxy#store
)
# File lib/moneta/adapters/pstore.rb, line 48 def store(key, value, options = {}) transaction { backend[key] = value } end
values_at(*keys, **options)
click to toggle source
(see Proxy#values_at
)
Calls superclass method
Moneta::Defaults#values_at
# File lib/moneta/adapters/pstore.rb, line 90 def values_at(*keys, **options) transaction(true) { super } end
Protected Instance Methods
transaction(read_only = false) { || ... }
click to toggle source
# File lib/moneta/adapters/pstore.rb, line 110 def transaction(read_only = false) case Thread.current[@id] when read_only, false yield when true raise TransactionError, "Attempt to start read-write transaction inside a read-only transaction" else begin Thread.current[@id] = read_only backend.transaction(read_only) { yield } ensure Thread.current[@id] = nil end end end