Skip to content

Instantly share code, notes, and snippets.

@kennyj
Forked from jugyo/memcache_memoize.rb
Created March 2, 2012 04:59

Revisions

  1. kennyj revised this gist Mar 2, 2012. 1 changed file with 1 addition and 5 deletions.
    6 changes: 1 addition & 5 deletions memcache_memoize.rb
    Original file line number Diff line number Diff line change
    @@ -13,11 +13,7 @@ module MemcacheMemoize
    def memcache_memoize(method, options)
    define_method(:"#{method}_with_memcache_memoize") do |*args|
    key = "#{self.class.name}##{method}(#{args.map(&:to_s).join(',')})"
    unless result = Rails.cache.read(key)
    result = __send__(:"#{method}_without_memcache_memoize", *args)
    Rails.cache.write(key, result, options)
    end
    result
    Rails.cache.fetch(key) { __send__(:"#{method}_without_memcache_memoize", *args) }
    end
    alias_method_chain method, :memcache_memoize
    end
  2. jugyo created this gist Mar 2, 2012.
    24 changes: 24 additions & 0 deletions memcache_memoize.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    # Usage:
    #
    # module ApplicationHelper
    # extend MemcacheMemoize
    #
    # def bar(count = 10)
    # "BAR" * count
    # end
    # memcache_memoize :bar, :expires_in => 10
    # end
    #
    module MemcacheMemoize
    def memcache_memoize(method, options)
    define_method(:"#{method}_with_memcache_memoize") do |*args|
    key = "#{self.class.name}##{method}(#{args.map(&:to_s).join(',')})"
    unless result = Rails.cache.read(key)
    result = __send__(:"#{method}_without_memcache_memoize", *args)
    Rails.cache.write(key, result, options)
    end
    result
    end
    alias_method_chain method, :memcache_memoize
    end
    end