Sha256: 83fed28f88d9f113f40da2a38d1d01b8041a2f2bc0a95e32bb4c34f0e7cf1878
Contents?: true
Size: 1.48 KB
Versions: 2
Compression:
Stored size: 1.48 KB
Contents
require 'leveldb' module Moneta module Adapters # LevelDB backend # @api public class LevelDB include Defaults include HashAdapter include IncrementSupport include CreateSupport include EachKeySupport # @param [Hash] options # @option options [String] :dir - Database path # @option options All other options passed to `LevelDB::DB#new` # @option options [::LevelDB::DB] :backend Use existing backend instance def initialize(options = {}) @backend = options[:backend] || begin raise ArgumentError, 'Option :dir is required' unless options[:dir] ::LevelDB::DB.new(options[:dir]) end end # (see Proxy#key?) def key?(key, options = {}) @backend.includes?(key) end # (see Proxy#clear) def clear(options = {}) @backend.each {|k,v| delete(k, options) } self end # (see Proxy#close) def close @backend.close nil end # (see Proxy#each_key) def each_key return enum_for(:each_key) { @backend.size } unless block_given? @backend.each { |key, _| yield key } self end # (see Proxy#values_at) def values_at(*keys, **options) ret = nil @backend.batch { ret = super } ret end # (see Proxy#merge!) def merge!(*keys, **options) @backend.batch { super } self end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
moneta-1.1.1 | lib/moneta/adapters/leveldb.rb |
moneta-1.1.0 | lib/moneta/adapters/leveldb.rb |