影舞 と DBI と最近の Ruby

社内のサーバをリプレースする作業が進行中。

その中の影舞を移行する作業を手伝ったわけですが、どうも比較的新しいバージョンの DBI や Ruby で動かすには、少々問題がある様でした。今は Redmine をメインで利用していますが、影舞には過去の貴重な情報が詰まっているので、なんとかうまいこと移行しないといけません。ちなみに、影舞は社内のみの公開だったので、バージョンアップをサボって 0.8.6 を使っていました。

まず、Ruby の 1.8.7 を使って動かすためには、セーフレベル絡みで問題がありました。これに関しては、$SAFE = 1 の行を消せばなんとかなる様子でした。ただ、試しに影舞の 0.8.8 を動かしてみたら、その問題は解消されたのか、特に問題になっていませんでした。

問題は DBI 絡みで、DateTime#to_time や DateTime#minute などを呼ぼうとして undefined method などとなっていました。古いサーバでは DBI も古いバージョン(0.1.1)を使っていて、このバージョンを上げてしまうと件のメソッドを拡張した Time や Timestamp を使わなくなってしまうらしく難儀しました。突然 DateTime を使うようになった(?)事も問題の原因だったようです。

dbi-0.1.1 の野良 gem を作って解決を試みたりしましたが、今度は dbd-mysql のパスが変わっていた事で別の問題が発生したりして泥沼の予感がひしひしと。なんだか、DBD/Mysql/Mysql だかを呼ぼうとするわけですが、dbd-mysql は lib/dbd/ と小文字のディレクトリしかなかったり、よくわからない状況でした。

あまり時間をかけていられなかったので、最後の望みをかけて影舞のリポジトリの 0.8 ブランチを使ってみることにしました。これは、色々と情報をあさっていく中で、影舞で DateTime#to_time メソッドを追加したというコミットログがみつかったからです。

結果、なんとか動いている様に見えています。とりあえず新規レポートが書けて、返信できて、一覧や詳細を見られれば問題ないので、しばらくは様子見でいいかなという状況です。

そんなこんなで、近々社内システムを運用しているサーバが強化される予定です。

プロフィール

このブログ記事について

このページは、koshigoeが2010年2月24日 22:38に書いたブログ記事です。

ひとつ前のブログ記事は「Apache の mod_filter を使えるようになりたい」です。

次のブログ記事は「ZenCoding はじめてみた」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。