よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

April 26, 2005 [おもひで]

[Ruby] Ruby-GNOME2のWebサイトがよくこける

なんらかのタイミングでinfo.dbが壊れる模様。

しょうがないので、counter.rbと同様に、1日1回7日分のバックアップをとるのと、10分ごとにファイルをチェックして壊れていたら前日分に戻す、というスクリプトを仕込んだ。前者はおいとくとして、後者はこんな感じ。

#バックアップはinfo.db.old.0 〜 info.db.old.6

require 'tmarshal'
require 'ftools'
 
HIKI_DATA_DIR = "/path/to/hikidata"
 
begin
  TMarshal.load(File.open("#{HIKI_DATA_DIR}/info.db", "r").readlines.join)
rescue SyntaxError
  back = (Dir.glob("#{HIKI_DATA_DIR}/info.db.old.?").sort{|a,b|
          File.mtime(a) <=> File.mtime(b)}.reverse)[0]
  File.cp(back, "#{HIKI_DATA_DIR}/info.db")
end

ファイルはロックしなくてもいいやー的な仕様。まぁ、どうせ壊れてたわけだし良いでしょ(無責任(^^;))。


編集