Sha256: 34cd41a54120be1ac9e858792cfb357f336222f07da0c44285315ef8c880c0c0

Contents?: true

Size: 911 Bytes

Versions: 8

Compression:

Stored size: 911 Bytes

Contents

require 'tdb'

module Moneta
  module Adapters
    # TDB backend
    # @api public
    class TDB
      include Defaults
      include HashAdapter
      include IncrementSupport
      include EachKeySupport

      supports :create

      # @param [Hash] options
      # @option options [String] :file Database file
      # @option options [::TDB] :backend Use existing backend instance
      def initialize(options)
        @backend = options[:backend] ||
          begin
            raise ArgumentError, 'Option :file is required' unless file = options.delete(:file)
            ::TDB.new(file, options)
          end
      end

      # (see Proxy#close)
      def close
        @backend.close
        nil
      end

      # (see Proxy#create)
      def create(key, value, options = {})
        @backend.insert!(key, value)
        true
      rescue ::TDB::ERR::EXISTS
        false
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
moneta-1.4.2 lib/moneta/adapters/tdb.rb
moneta-1.4.1 lib/moneta/adapters/tdb.rb
moneta-1.4.0 lib/moneta/adapters/tdb.rb
moneta-1.3.0 lib/moneta/adapters/tdb.rb
moneta-1.2.1 lib/moneta/adapters/tdb.rb
moneta-1.2.0 lib/moneta/adapters/tdb.rb
moneta-1.1.1 lib/moneta/adapters/tdb.rb
moneta-1.1.0 lib/moneta/adapters/tdb.rb