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

Version Path
rbbt-util-5.20.9 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.20.8 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.20.7 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.20.6 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.20.5 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.20.4 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.20.3 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.20.2 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.20.1 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.20.0 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.19.37 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.19.36 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.19.35 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.19.34 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.19.32 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.19.31 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.19.30 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.19.29 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.19.28 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.19.27 lib/rbbt/persist/tsv/lmdb.rb