l'essentiel est invisible pour les yeux

Monday, April 23, 2007

[Rails] ActiveRecord::QueryCacheにキャッシュの削除に関する指定を実装した。

はてぶや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 コメントくれた人