Sha256: 13de17a12cbe2c980c39bba2f38ba5298081e43cd8cf65f3ab6170b8d5386e88

Contents?: true

Size: 861 Bytes

Versions: 7

Compression:

Stored size: 861 Bytes

Contents

require 'memcache'

module Feedzirra
  module Backend
    
    # Can be used to set up Memcache, or clients able to speak the Memcache protocol such as 
    # Tokyo Tyrant, as a Feedzirra::Backend.
    class Memcache
      DEFAULTS = {
        :server => 'localhost',
        :port   => '11211'
      }
      
      def initialize(options = { })
        @options  = DEFAULTS.merge(options)
        @cache    = MemCache.new([ @options[:server], @options[:port] ].join(':'), :namespace => 'Feedzirra')
      end
      
      def get(url)
        res = @cache.get(key_for(url))
        Marshal.load(res) unless res.nil?
      end
    
      def set(url, result)
        @cache.set(key_for(url), Marshal.dump(result))
      end
      
      private
      
      def key_for(url)
        MD5.hexdigest(URI.parse(url).normalize.to_s)
      end

    end
    
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
jsl-feedzirra-0.0.12.1 lib/feedzirra/backend/memcache.rb
jsl-feedzirra-0.0.12.2 lib/feedzirra/backend/memcache.rb
jsl-feedzirra-0.0.12.3 lib/feedzirra/backend/memcache.rb
jsl-feedzirra-0.0.12.4 lib/feedzirra/backend/memcache.rb
jsl-feedzirra-0.0.12.5 lib/feedzirra/backend/memcache.rb
jsl-feedzirra-0.0.12.6 lib/feedzirra/backend/memcache.rb
jsl-feedzirra-0.0.12.7 lib/feedzirra/backend/memcache.rb