Sha256: 861e2416f85db7ff737a02224be1d67392a5cc1c1c5c50443a1c0f3c6d34677c

Contents?: true

Size: 1.18 KB

Versions: 6

Compression:

Stored size: 1.18 KB

Contents

module Amfetamine
  # This adapter wraps methods around memcached (dalli) methods
  module CachingAdapter
    def self.included(base)
      base.extend ClassAndInstanceMethods
      base.extend CacheServer
      base.send(:include,ClassAndInstanceMethods)
    end

    def initialize(servers, options={})
      @cache_server ||= Dalli::Client.new(servers, options)
    end

    def cache_server
      @cache_server
    end

    private :cache_server

    module ClassAndInstanceMethods
      def get(key)
        cache_server.get(key)
      end

      def set(key,data)
        cache_server.set(key, data)
      end

      def add(key, data)
        cache_server.add(key,data)
      end

      def delete(key)
        cache_server.delete(key)
      end

      def flush
        cache_server.flush
      end

      def fetch(key)
        #cache_server.fetch(key,&block)
        val = get(key)
        if val.nil? && block_given?
          val = yield
          add(key,val)
        else
          Amfetamine.logger.info "Hit! #{key}"
        end
        val
      end
    end

    module CacheServer
      private

      def cache_server
        Amfetamine::Config.memcached_instance
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
amfetamine-0.4.2 lib/amfetamine/caching_adapter.rb
amfetamine-0.4.1 lib/amfetamine/caching_adapter.rb
amfetamine-0.4.0 lib/amfetamine/caching_adapter.rb
amfetamine-0.3.3 lib/amfetamine/caching_adapter.rb
amfetamine-0.3.2 lib/amfetamine/caching_adapter.rb
amfetamine-0.3.1 lib/amfetamine/caching_adapter.rb