at posts/single.html

さくらインターネット上で tDiary を ruby1.9.1-p0 で動かす

tDiary on ruby 1.9.1-p0

tDiary が Ruby1.9 でもだいぶ安定してきたみたい。 結局 tDiary の Ruby1.9 対応にあまり貢献できてないので、せめて人柱になってみる。 と言うわけで、この日記を ruby1.9.1-p0 で動かすようにした。 以下はその手順。

前提

UTF-8 化された tDiary 2.3 系で日記を動かしていること。 tDiary2.2 + Ruby1.8 からいきなり tDiary2.3 + Ruby1.9 にアップデートするのはできないかも。

Ruby1.9.1 のインストール

公式サイトのダウンロードページから ruby 1.9.1-p0 をダウンロードする。 コンパイルとインストールはいつもどおり。 レンタルサーバなので --prefix=$HOME を指定しているくらい。

$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.gz
$ tar zxvf ruby-1.9.1-p0.tar.gz
$ cd ruby-1.9.1-p0
$ ./configure --prefix=$HOME
$ make
$ make install

これで Ruby のバージョンが 1.9.1p0 になった。

$ ruby --version
ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-freebsd6.1]

tDiary のアップデート

tDiary 本体とプラグイン (公式, contrib) を、リポジトリの最新版にアップデートした。 ここではいきなり稼働中の日記をアップデートしているけど、ちゃんと事前にバックアップをとっておくこと。

$ cd www/diary
$ svn info
Path: .
URL: http://tdiary.svn.sourceforge.net/svnroot/tdiary/trunk/core
(略)
$ svn update
$ cd misc/plugin
$ svn info
Path: .
URL: http://tdiary.svn.sourceforge.net/svnroot/tdiary/trunk/plugin
(略)
$ svn update
$ cd ../plugin2
$ svn info
Path: .
URL: http://svn.coderepos.org/share/platform/tdiary/plugin
(略)
$ svn update

index.rb と update.rb の書き換え

index.rb と update.rb の一行目に書かれている ruby のパスを、先ほどインストールした ruby1.9 の場所に書き換える。

#!/home/machu/bin/ruby
# -*- coding: utf-8; -*-

それから、ファイルの拡張子を .rb から .cgi へとリネームする。

tDiary キャッシュの削除

Ruby1.8系で動かしていたときの tDiary のキャッシュが残っていると、 Ruby1.9 系では動かない。 なので、 tDiary のキャッシュを削除する。 間違って日記本体を消さないように、慎重に…。

$ cd ~/var/tdiary/cache
$ rm -rf *

カテゴリプラグインのキャッシュは別フォルダにある。

$ cd ~/var/tdiary/category
$ rm -rf *

これで、日記がちゃんと表示・更新されれば、ひとまず移行完了。 一見したところ、特に問題なく動いているみたい。

カテゴリプラグインのキャッシュ生成

さっきキャッシュを消したので、 tDiary の設定画面を開いて「カテゴリ」→「カテゴリインデックスの作成」を実行する。 …と、以下のようなエラーが表示された。

500 Internal Server Error

can't convert nil into Hash (TypeError)

(plugin/category.rb):599:in `update'
(plugin/category.rb):599:in `block (2 levels) in initial_replace_sections'

途中まではカテゴリインデックスが ~/var/tdiary/category に生成されているので、日記データ側に問題があるような気がする。 まぁ、大きな問題じゃないので、あまり気にしない。

関連する日記