cache_fu

発見した。
これで、ActiveRecordのキャッシュができる


環境設定でちとてこずったので、覚書。
先に紹介したpuppy環境でやってみた。

  • cache_fuのダウンロード。

http://github.com/defunkt/cache_fu/tree/master
↑からダウンロード。
git clone コマンドで落とせると思うんだけど、
面倒だったので、downloadから落とした。
解凍して、vendor/plugins以下に配置すればOK。

defaults/memcached.yml.defaultをRAILS_ROOT/config以下に
memcached.ymlとしてコピー
中身はいじらなくてもとりあえずは動くので放置。

  • memcache-clientのインストール

gem install memcache-client

  • libeventをインストール

memcachedが依存しているので、こいつを先にインストール
http://www.monkey.org/~provos/libevent/
↑からダウンロード。 最新版でOK。
あとは、解凍して

./configure
make
make install

http://danga.com/memcached/download.bml
↑からダウンロード。 最新版でOK.
あとは、解凍して

./configure
make
make install

.bachrcに

export LD_LIBRARY_PATH=/usr/local/lib/

を追加するか

ln -s /usr/local/lib/libevent-1.4.so.2 /lib/libevent-1.4.so.2

を実行。

memcached -u root

を実行し、エラーが出なければOK。

memcached -d -p 11211 -u root

cache_fuの中に起動スクリプトがあるんだけど、どうもうまく起動できないので、手作業で起動した。

  • 確認してみる

script/generate scaffold User name:string pass:stirng
rake db:migrate

app/models/user.rbを編集

class〜
acts_as_cached :ttl => 10.minutes
def self.find_all
return self.get_cache(:find_all) do
self.find(:all)
end
end
・・・

app/controllers/user_controller.rbのindexメソッドを修正

#@user = User.find(:all)
@user = User.find_all

あとはサーバを起動していじる。
一覧画面が出れば完了!
ためしにユーザを追加すると、あれ?一覧には出ない。
キャッシュ時間を10分に指定しているので、10分後にアクセスすると、追加したユーザが出るようになります。