tDiaryのmod_ruby化

tDiaryをmod_ruby化してみる。

apt-get install libapache-mod-ruby

でインストール。/etc/apache/httpd.confに

LoadModule ruby_module /usr/lib/apache/1.3/mod_ruby.so

を追加。tDiaryCGIとして動くものが、index.rb, update.rbなのでの中で

AddHandler cgi-script .rb

となっていたところを

AddHandler ruby-script .rb

に変更。これで終りのはずだが、アクセスしてみると、

Errors in plugins? Retry to Update or Configure.
TDiary::PluginError
Plugin error in '01sp.rb'.
Plugin error in 'misc/plugin/category.rb'.
incompatible marshal file format (can't be read)
format version 4.6 required; 4.8 given
(plugin/01sp.rb):162:in `instance_eval'

こんなエラーが出る。categoryプラグインが作っているDBのバージョンが、期待しているものより新しいと言っているらしい。今までCGIで動いていたrubyは/usr/local/bin/rubyに入っている1.8.1なのだが、mod_ruby.soは1.6.7なのだ。/home/diary/category/以下を退避して、category DBを作り直す。

root@obs# su - www-data
www-data@obs:/home/httpd/tdiary$ echo 'conf=category;category_initialize=1' | /usr/bin/ruby-167 ./update.rb

この時、PATHの最初は/usr/local/binなので

www-data@obs:/home/httpd/tdiary$ echo 'conf=category;category_initialize=1' | /./update.rb

とやってしまうと、結局1.8.1のrubyでDBが生成されてしまうのでダメだ。これで完了。
で、どうかと言うと、速い。それほど大きな期待はしていなかったのだが、明らかに速い。体感、半分くらいの感じ。でも何だかばらつきが大きいような...?