Sha256: 59c70a96720ba1ef013a64b9c07cc7d575a43ca5c7b265dc8690d073afd79d59
Contents?: true
Size: 1.48 KB
Versions: 185
Compression:
Stored size: 1.48 KB
Contents
require 'lmdb' module Persist module LMDBAdapter include Persist::TSVAdapter def self.open(path, write) database = CONNECTIONS[path] ||= begin dir = File.dirname(File.expand_path(path)) file = File.basename(path) env = LMDB.new(dir, :mapsize => 1024 * 10000) database = env.database file, :create => write database end database.extend Persist::LMDBAdapter unless Persist::LMDBAdapter === database database.persistence_path ||= path database end def each cursor do |cursor| while pair = cursor.next yield *pair end end self end def collect res = [] cursor do |cursor| while pair = cursor.next res = if block_given? yield *pair else pair end end end res end end def self.open_lmdb(path, write, serializer = nil) write = true unless File.exists? path FileUtils.mkdir_p File.dirname(path) unless File.exists?(File.dirname(path)) database = Persist::LMDBAdapter.open(path, write) unless serializer == :clean TSV.setup database database.serializer = serializer || database.serializer end database end end
Version data entries
185 entries across 185 versions & 1 rubygems