Skip to content

Instantly share code, notes, and snippets.

@kennyj
Forked from jugyo/memcache_memoize.rb
Created March 2, 2012 04:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kennyj/1955808 to your computer and use it in GitHub Desktop.
Save kennyj/1955808 to your computer and use it in GitHub Desktop.
memoize with memcache store in Rails
# 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(',')})"
Rails.cache.fetch(key) { __send__(:"#{method}_without_memcache_memoize", *args) }
end
alias_method_chain method, :memcache_memoize
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment