Sha256: 3a5e93dcab58fb166f4482940ee8bf76521f490b39be1eb0f89c31593612ad6e

Contents?: true

Size: 1.17 KB

Versions: 3

Compression:

Stored size: 1.17 KB

Contents

require 'daybreak'

module Moneta
  module Adapters
    # Daybreak backend
    # @api public
    class Daybreak < Memory
      # @param [Hash] options
      # @option options [String] :file Database file
      # @option options [::Daybreak] :backend Use existing backend instance
      def initialize(options = {})
        @backend = options[:backend] ||
          begin
            raise ArgumentError, 'Option :file is required' unless options[:file]
            ::Daybreak::DB.new(options[:file], serializer: ::Daybreak::Serializer::None)
          end
      end

      # (see Proxy#load)
      def load(key, options = {})
        @backend.load if options[:sync]
        @backend[key]
      end

      # (see Proxy#store)
      def store(key, value, options = {})
        @backend[key] = value
        @backend.flush if options[:sync]
        value
      end

      # (see Proxy#increment)
      def increment(key, amount = 1, options = {})
        @backend.lock { super }
      end

      # (see Proxy#create)
      def create(key, value, options = {})
        @backend.lock { super }
      end

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

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
moneta-1.0.0 lib/moneta/adapters/daybreak.rb
moneta-0.8.1 lib/moneta/adapters/daybreak.rb
moneta-0.8.0 lib/moneta/adapters/daybreak.rb