はてぶやdel.icio.usで意見をもらったので、ActiveRecord::QueryCacheにキャッシュの削除に関する設定をできるように実装した。
使用方法
:expire_methodsでキャッシュを削除するメソッドを指定する。指定できるメソッドは、ActiveRecord#after_○○のメソッド名。
class Person
query_cache :expiry => 3.minutes, :expire_methods => [:create, :update, :destroy]
end
実装
def query_cache(options)
options.assert_valid_keys([:expiry, :expire_methods])
write_inheritable_attribute('query_cache_expiry', options[:expiry] || 0)
[options[:expire_methods]].flatten.each do |method|
__send__("after_#{method}") { __send__(:delete_all_query_cache) }
end unless options[:expire_methods].nil?
end
memcachedを本格的に運用するためには超えなければいけない壁があるんだけど、それは面白そうなので社内勉強会ネタとして開催してみよう。
Thanks for コメントくれた人