HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/lib/ruby/vendor_ruby/moneta/adapters/leveldb.rb
require 'leveldb'

module Moneta
  module Adapters
    # LevelDB backend
    # @api public
    class LevelDB < Memory
      # @param [Hash] options
      # @option options [String] :dir - Database path
      # @option options All other options passed to `LevelDB::DB#new`
      # @option options [::LevelDB::DB] :backend Use existing backend instance
      def initialize(options = {})
        @backend = options[:backend] ||
          begin
            raise ArgumentError, 'Option :dir is required' unless options[:dir]
            ::LevelDB::DB.new(options[:dir])
          end
      end

      # (see Proxy#key?)
      def key?(key, options = {})
        @backend.includes?(key)
      end

      # (see Proxy#clear)
      def clear(options = {})
        @backend.each {|k,v| delete(k, options) }
        self
      end

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