tmp_cacheというgemを作った。


■インストール

gem install tmp_cache


■使い方
cacheなので、memcacheのように有効期限を指定できる。
60秒間生きるキャッシュの場合、61秒後はnilになる
#!/usr/bin/env ruby
require 'rubygems'
require 'tmp_cache'

TmpCache.set('name', 'shokai', 60) # expire 60 sec

puts TmpCache.get('name') # => 'shokai'
sleep 61
puts TmpCache.get('name') # => nil
TmpCacheはグローバルにどこからでも読めるので便利


■利用例
skype-chat-gatewayや、Herokuで秋月電子のRSSを作るで使ってる。

skype-chat-gatewayにHTTPアクセスがあるたびに、何百回もAppleScriptを呼び出してSkype.appと通信させるとひどいことになるのでcacheさせている。
秋月のほうも、新着商品の個別ページ100個以上を見に行っているのでcacheを使わなければ大迷惑になってしまう。
Herokuは無料でmemcachedが使えるけどそれだけの為に(無料なのに)クレジットカードを登録するの嫌だし。



例えば、webページを読みに行くのを1200秒cacheする場合はこんなふうにする。
#/usr/bin/env ruby                                                                                                                                                           
require 'rubygems'
require 'open-uri'
require 'tmp_cache'

def get_page(url, expire=1200)
TmpCache.get(url) || TmpCache.set(url, open(url).read, expire)
end

url = 'http://shokai.org'

puts get_page(url)

puts get_page(url) # 2回目はcacheから読まれる