candycaneをPostgreSQLにも対応させたい!

昨日の夜に社内用 redmine をアップデートしていたのですが、まだCakePHPもgitも覚えたての頃に、CakePHP開発合宿に参加して開発したのを思いだしたのか、急に candycane が気になったので、ちょっといじってみる事にしました。

まずは手始めに、手持ちのMacのPHP+MySQL環境にインストールしてみたのですが、まぁこれが超絶簡単。@yandoさんも書いていますが、本当に3分程度でインストールが完了してしまいました。


f:id:kaz_29:20110817232500p:image


いよいよPostgreSQLに対応する作業ですが、実際にやった作業は以下のような感じ。

  • MySQLの初期状態を元にCakePHPのschemaファイルを作成
  • 上のschemaファイルを使ってPostgreSQL上にテーブルを作成
  • MySQLのダンプファイルを元に初期データをインサート
  • pg_dumpでダンプしたものを整形して初期化用sqlを作成
  • インストーラのDB設定画面にDB選択フィールドを追加
  • インストーラにPostgreSQLの接続確認処理 database.phpに選択されたdriverを書き込む処理を追加
  • 選択されたドライバ毎に初期データ作成用sqlを切り替える処理を追加

とこんな感じです。途中、schema生成時にエラーが出てはまったのですがこれはcandycane開発当初にはまだリリースされていなかったPostgreSQL9.xに依存する問題だったので、CakePHP1.3.10CakePHP1.3.5で対応されたもの組み込んで対応しました。

以下が実際のインストーラのスクリーンショットです。

f:id:kaz_29:20110817235238p:image

インストール完了後に Administration -> informationをみるとこんな感じ。

f:id:kaz_29:20110817235239p:image

ひとまず、無事PostgreSQLで動作させる事ができました。

実際にはいくつかの機能で正常に動作しない部分や、テストが通らない所があるので今後ちょっとづつ手を入れていこうと思ってます。

ソースはgithubにあげてあります