Skip to content

Instantly share code, notes, and snippets.

@scottlowe
Created August 6, 2011 22:41
Show Gist options
  • Save scottlowe/1129837 to your computer and use it in GitHub Desktop.
Save scottlowe/1129837 to your computer and use it in GitHub Desktop.
Memoize with alias, redefine
def expensive_stats(id)
puts "Executing resource intensive method for ID: #{id}"
sleep 5
Time.now
end
alias :expensive_stats! :expensive_stats
def expensive_stats(id)
@expensive_stats ||= []
@expensive_stats[id] ||= expensive_stats!(id)
end
puts expensive_stats 3
puts expensive_stats 3
puts expensive_stats 3
puts expensive_stats 7
puts expensive_stats 7
puts expensive_stats 7
puts expensive_stats! 7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment