※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

DB初期化

 ユーザ機能を作ろうと思ったけど、いろいろ考えてサーチ管理者の機能を先に作ることに。
 まずはDBの初期設定。最初はSQLiteファイルを手動で設定すればいいなんて考えていたけど、最低限の初期設定は自動化しようかと。
 もっともフォームを使って登録とかじゃなく、作成済みのSQLを順に流すだけ。初期設定を変えたい場合は、直接SQLを変更してもらう感じ。

 処理内容の概略は以下の通り。
  1. 設置者:サーバにスクリプトを置く
  2. 設置者:初期化用ページにアクセスする
  3. スクリプト:DBにマスタデータがなければ生成する。
    完全にマスタがないわけではなく、一部欠損しているなどの不整合状態ならアボートさせる(現状のデータファイルを削除なりリネームして退避なりした後で再アクセスするよう促す)
  4. スクリプト:DBに管理者パスワードが設定されていなければ(初期状態)、パスワードを含めて管理者用初期設定をさせる。
    管理者パスワードが既に設定されていたら、アクセスされるのはおかしい(というか必要ない)のでアボートさせる(安全のため、初期化用ページは本当に初期状態の場合しか動作しないようにする。初期設定が終わってさえいれば、パスワード等の変更は管理画面でできるから無問題)
  5. スクリプト:セッションを開始
  6. スクリプト:管理用メイン画面にリダイレクト
 たったこれだけでも、コードにするとめんどいんだよね……。
 DBの初期化処理自体はうまくいって、直後の画面表示はこうなります。



 スタイル等がまだ未確定なのでメッセージ部分がアレだし、パスワードに使える文字も確定していないけど。

 何にしても初期化を完了した状態で検索画面にアクセスすると、データがなくても表示に異常がないことを確認。ただしセッション周りはまだいろいろ考える&調べることがあるので、やっつけの暫定コード。
 それからアボートはdieするだけだけど(あってはいけない状態なので、HTMLのページにするなどの余計な情報は出さない)、日本語メッセージを表示しようとすると環境依存で化けますね。たとえばFirefox3.6はちゃんと表示されたけど、IE8はダメ。なのでレスポンスヘッダで文字コードを送出してdieする関数を作成してそれを呼び出すことに。

2010/10/10 14:17:30 更新