cache_fu
発見した。
これで、ActiveRecordのキャッシュができる
環境設定でちとてこずったので、覚書。
先に紹介したpuppy環境でやってみた。
- cache_fuのダウンロード。
http://github.com/defunkt/cache_fu/tree/master
↑からダウンロード。
git clone コマンドで落とせると思うんだけど、
面倒だったので、downloadから落とした。
解凍して、vendor/plugins以下に配置すればOK。
- memcached.ymlをコピー
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
- memcachedをインストール
http://danga.com/memcached/download.bml
↑からダウンロード。 最新版でOK.
あとは、解凍して
./configure
make
make install
- memcachedの環境設定
.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をデーモン起動
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分後にアクセスすると、追加したユーザが出るようになります。