Sha256: c90aed375adff99802d2c4d0b0f17c6d84faf820aad078ccdd23b00b8165f197

Contents?: true

Size: 1.93 KB

Versions: 4

Compression:

Stored size: 1.93 KB

Contents

module Internals

  module Index
  
    class Redis
    
      # Redis Backend Accessor.
      #
      # Provides necessary helper methods for its
      # subclasses.
      # Not directly useable, as it does not provide
      # dump/load methods.
      #
      class Basic
      
        attr_reader :namespace, :backend
      
        # An index cache takes a path, without file extension,
        # which will be provided by the subclasses.
        #
        def initialize namespace
          @namespace = namespace
          
          # TODO Turn this inside out such that people can pass in
          # their own Redis instance.
          # 
          # TODO Make the :db a real option.
          #
          @backend = ::Redis.new :db => 15
        end
      
        # Does nothing.
        #
        def load
          # Nothing.
        end
        # We do not use Redis to retrieve data.
        #
        def retrieve
          # Nothing.
        end
      
        # Redis does not backup.
        #
        def backup
          # Nothing.
        end
      
        # Deletes the Redis index namespace.
        #
        def delete
          # Not implemented here.
          # Note: backend.flushdb might be the way to go,
          #       but since we cannot delete by key pattern,
          #       we don't do anything.
        end
      
        # Checks.
        #
      
        # Is this cache suspiciously small?
        #
        def cache_small?
          size < 1
        end
        # Is the cache ok?
        #
        # A small cache is still ok.
        #
        def cache_ok?
          size > 0
        end
        # Extracts the size of the file in Bytes.
        #
        # Note: This is a very forgiving implementation.
        #       But as long as Redis does not implement
        #       DBSIZE KEYPATTERN, we are stuck with this.
        #
        def size
          backend.dbsize
        end
      
      end
    
    end
  
  end
  
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
picky-2.0.0.pre2 lib/picky/internals/index/redis/basic.rb
picky-2.0.0.pre1 lib/picky/internals/index/redis/basic.rb
picky-1.5.4 lib/picky/internals/index/redis/basic.rb
picky-1.5.3 lib/picky/internals/index/redis/basic.rb