tDiary には erb コンパイル済みのソースなんかをキャッシュとして一時ファイルに書き出していて、再利用するという仕組みがあるんだけど、つい先日 PaaS 対応したついでに作ったキャッシュを memcached に保存するコードをこの日記に入れてみた。
使い方は以下の3行を tdiary.conf に書くだけ。
require 'tdiary/io/cache/memcached'
require 'tdiary/io/default'
@io_class = DefaultIO
ベンチは取ってないけど体感でだいぶ早くなったような気がするので、中々便利かも。
rails-dev-box に rbenv の puppet manifest を追加した - HsbtDiary(2013-01-12)で出した pull request は残念ながら reject されてしまった。
とにかく早く環境を構築できることが重要で、パッチレベルの違いだとかで rvm や rbenv 入れてコンパイルする環境を作るのはいらんがなということらしい。オレは明らかに exploit が残っているようなバージョンを使わせることを良しとしないので、納得できない理由ではあるのだけど、これはプロジェクトの目的の違いとうことで理解したので取り下げることにした。
そういうわけで rails-dev-box で rbenv が最初から入っている環境を使いたい人は fork バージョンである hsbt/rails-dev-boxをご利用ください。
tDiary の開発環境作るのが... という声をよく見かけるので、オレがいつもやっているローカルホストで tDiary をすぐに起動する方法を rake task にした。
具体的には @kakutani が以前に作った webrick でマウントして起動するスクリプトを本体に組み込んで、rake server というタスクを叩けば、全自動で tDiary を起動するようにした。設定ファイルがない時はそれっぽい雛形を全部作るし、tmp/data に本番のデータ、tdiary.conf に本番の tdiary.conf を置けば本番と全く同じ環境で動かすことができます。
webrick なのであくまでもデバッグ用途だけどだいぶ捗るはず。そのうち rake server:rack で rack mount で起動するようにするつもり。
複数日記で単一のmemcachedサーバを共有できるようにするのはちょっと変更が大きそうだったのでまだmemcachedキャッシュは試していないのですが、第二tDiary.Netのキャッシュファイルを調べてみたら、1MB(memcachedのvalueサイズの上限)を越えるファイルがいくつかはありました。memcachedキャッシュにしてそういうケースだとどうなるでしょうか? store_dateで例外をはくのか、restore_dataしたキャッシュを使うところで例外が起きるのか、そのあたりのケアが必要な気がします。
おお、その辺は何も考えておりません... dalli というクライアントを使っているので、そのクライアントの通信時に死んで終わりということになりそうです...<br><br>redis キャッシュ当たりも作ってみましょうか...