家計簿

大人は金銭管理が出来て当然。大人に向けて家計簿を準備した。
スタンドアロンなのとかWebベースのとか見たけどいまいちだったので趣向を微妙に変えて。Webベースのももんが家計簿をローカルに使ってみることにした。
サーバは大げさにしたくないのでWebrickで。
ということで、mobo の CVS HEAD をダウンロード。
(略)
ディレクトリ構成は

mobolocal/
+mobo/
  +mobo.rb
  +update.rb
  +その他いろいろ
+mododata/

と、mobodataディレクトリを作っておく。

$ diff -ur moboorig mobolocal
Only in mobolocal/mobo: index.cgi
Only in mobolocal/mobo: mobo.conf
Only in mobolocal/mobo: server.rb
Only in mobolocal/: mobodata

index.cgiはindex.rbのシンボリックリンク
mobo.confはサンプルちょっと変えただけ。

--- mobolocal/mobo/mobo.conf.sample	2007-05-03 23:11:04.937500000 +0900
+++ mobolocal/mobo/mobo.conf	2007-05-03 23:40:03.562500000 +0900
@@ -14,7 +14,7 @@
 #   経由でアクセスできない(public_html配下でない)ディレクトリを指定しま
 #   す。このディレクトリは、WWWサーバの権限で書き込めるパーミッションに
 #   しておく必要があります。
-@data_path = '/home/foo/mobo'
+@data_path = '../mobodata'
 
 # 家計簿保存形式の指定【オプション】
 #   家計簿の保存形式を標準から変更する場合には、必要な設定をしなければなり
@@ -26,8 +26,8 @@
 #@io_class = MoBo::DBIIO
 #
 #   以下の 2 行のコメント(#)をはずすと、yaml 形式になります。
-#require 'mobo/yamlio'
-#@io_class = MoBo::YAMLIO
+require 'mobo/yamlio'
+@io_class = MoBo::YAMLIO
 
 # 参照・更新スクリプト名【オプション】
 #   @indexと@updateには、それぞれ参照用、更新用のスクリプトファイル名を

server.rb

#!/usr/bin/ruby
require 'webrick'
doc_root = "."
srv = WEBrick::HTTPServer.new({:DocumentRoot => doc_root,
			    :BindAddress => '127.0.0.1',
			    :CGIInterpreter => '/usr/bin/ruby',
			    :Port => 58686})
["/index.rb", "/update.rb"].each {|cgi|
  srv.mount(cgi, WEBrick::HTTPServlet::CGIHandler, doc_root+cgi)
}
['INT', 'TERM'].each {|signal|
  Signal.trap(signal){srv.shutdown}
}
srv.start

サーバースタート

$ ./server.rb

http://localhost:58686/ を開いてそれっぽければOK。何とか動く。
ただ、

  • mobo.confでyaml形式を選んだのに、yamlで保存されない
  • インストール直後に「集計」を選ぶと、
divided by 0 (ZeroDivisionError)

(erb):33:in `/'
(erb):33:in `do_eval_rhtml'
(erb):27:in `each'
(erb):27:in `do_eval_rhtml'
/home/oto-oto-oto/program/ruby/mobo/mobolocal/mobo/mobo.rb:857:in `do_eval_rhtml'
/home/oto-oto-oto/program/ruby/mobo/mobolocal/mobo/mobo.rb:833:in `eval_rhtml'
/home/oto-oto-oto/program/ruby/mobo/mobolocal/mobo/index.cgi:56

と出る。

まあ気にしないことにしよう。データを入れたら0割りは消えるかもしれないし、保存されてれば形式は何でもいいや。

なんかまずいとかもっと良い方法があれば教えて下さい。