blog.sowatchasayin

Rails etc.

Rails cache by memory_store with 1-day expiration

Rails cache has no expiration by default.
So I save the time cached in the cache itself.

class ApplicationController < ActionController::Base
helper_method :count_something
def count_something
cache_of_today "count-of-something" do
Something.count
end
end
def cache_of_today(key, &block)
cached = Rails.cache.read key
if !cached || cached[:created_at] < 1.day.ago
Rails.cache.write key, :created_at => Time.now, :value => block.call
cached = Rails.cache.read key
end
cached[:value]
end
end

No comments:

Post a Comment

Author

Fujimura Daisuke
http://fujimuradaisuke.com

Labels