Sha256: 2efd65a2273a708c78c06aa8eb57b360a8d1d8c6fab52e64f5902e1db05a47c9

Contents?: true

Size: 1.48 KB

Versions: 562

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.exist? path

    FileUtils.mkdir_p File.dirname(path) unless File.exist?(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

562 entries across 562 versions & 1 rubygems

Version Path
rbbt-util-6.0.3 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.44.1 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.43.0 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.42.0 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.41.1 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.41.0 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.40.5 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.40.4 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.40.3 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.40.0 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.39.0 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.38.1 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.38.0 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.37.16 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.37.15 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.37.14 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.37.13 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.37.12 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.37.11 lib/rbbt/persist/tsv/lmdb.rb
rbbt-util-5.37.10 lib/rbbt/persist/tsv/lmdb.rb