Sha256: 9f2e16c4a79defb58f3051b6f903eb52f6db7581c8e38f79b17450a174de9837

Contents?: true

Size: 1.32 KB

Versions: 12

Compression:

Stored size: 1.32 KB

Contents

require 'anemone/storage/exceptions'

module Anemone
  module Storage
    class Base

      def initialize(adapter)
        @adap = adapter

        # verify adapter conforms to this class's methods
        methods.each do |method|
          if !@adap.respond_to?(method.to_sym)
            raise "Storage adapter must support method #{method}"
          end
        end
      end

      def [](key)
        @adap[key]
        rescue
          puts key
          raise RetrievalError, $! 
      end

      def []=(key, value)
        @adap[key] = value
        rescue
          raise InsertionError, $!
      end

      def delete(key)
        @adap.delete(key)
        rescue
          raise DeletionError, $!
      end

      def each
        @adap.each { |k, v| yield k, v }
        rescue
          raise GenericError, $!
      end

      def merge!(hash)
        @adap.merge!(hash)
        rescue
          raise GenericError, $!
      end

      def close
        @adap.close
        rescue
          raise CloseError, $!
      end

      def size
        @adap.size
        rescue
          raise GenericError, $!
      end

      def keys
        @adap.keys
        rescue
          raise GenericError, $!
      end

      def has_key?(key)
        @adap.has_key?(key)
        rescue
          raise GenericError, $!
      end

    end
  end
end

Version data entries

12 entries across 12 versions & 3 rubygems

Version Path
sutch-anemone-0.7.2.2 lib/anemone/storage/base.rb
sutch-anemone-0.7.2.1 lib/anemone/storage/base.rb
sutch-anemone-0.7.2 lib/anemone/storage/base.rb
rodneyc-anemone-0.7.1.3 lib/anemone/storage/base.rb
rodneyc-anemone-0.7.1.2 lib/anemone/storage/base.rb
rodneyc-anemone-0.7.1.1 lib/anemone/storage/base.rb
anemone-0.7.2 lib/anemone/storage/base.rb
anemone-0.7.1 lib/anemone/storage/base.rb
anemone-0.7.0 lib/anemone/storage/base.rb
anemone-0.6.1 lib/anemone/storage/base.rb
anemone-0.6.0 lib/anemone/storage/base.rb
anemone-0.5.0 lib/anemone/storage/base.rb