FreeBSDで運用する(その10)

Kagemai::MySQLStore/PostgresStore→Kagemai::XMLFileStoreを行ったときに出力された/var/log/httpd-error.logは以下の通りである。

pmutex.rb:83:in `flock': closed stream (IOError)
 from pmutex.rb:83:in `unlock'
 :
 :

つまり、既にクローズされたファイルに対してunlockを実行したと言うことだ。
この点はI/Oクラスのclosed?メソッドを使用してエラーが発生しないようにした。

def unlock(mode = EX)
  sync     = Thread.current[:sync]
  lockfile = Thread.current[:lockfile]

  unless lockfile.closed? then # ←追加
    lockfile.flock(File::LOCK_UN)
    lockfile.close()
    sync.unlock(mode)
  end
  PMutex.release_sync(@lockfilename)
end

これで、Kagemai::MySQLStore/PostgresStore→Kagemai::XMLFileStoreも成功するようになった。
いよいよメールの設定をすれば運用開始である。