昨日まで設計した内容に基づき、symfonyコマンドを駆使してじっさいにアプリケーションの組み立てを行いたいと思います。Symfonyがプロジェクトのセットアップからプロトタイプの作成までを以下に手早く行えるかを説明します。
tracとSubversionの準備
tracfort.jpに本サンプル用のtracを準備しました。
ソースコードはSubversionにより管理されています。チェックアウトは下のようにして行うことができます。
svn checkout http://svn.tracfort.jp/bookmark/trunk bookmark
プロジェクトの作成
symfonyコマンドを利用して生成
Symfonyをインストールすると利用できるようになるsymfonyコマンドを利用して、プロジェクトを作成します。
mkdir bookamark cd bookmark symfony new bookmark symfony app frontend
設計の通り、bookmarkプロジェクトにfrontendアプリケーションを作成しました。
propel.iniの編集
config/propel.ini にはpropel.output.dirにsymfony new コマンドを実行した時の絶対パスが入ってしまいます。このまま一人で開発を続けるなら問題ないのですが、さすがにそれでは不便なので以下のように##に置き換えて置きます。Bad ノウハウです。
sed -e "s/propel.output.dir = .*/propel.output.dir = ##/"< config/propel.ini >config/propel.ini.in rm config/propel.ini
さらに、bootstrapスクリプトを準備し現在のカレントパスをここに置き換えます。
#!/bin/sh sed -e "s*propel.output.dir = ##*propel.output.dir = `pwd`*" < config/propel.ini.in >config/propel.ini symfony fix-perms
2行めのfix-permsはsymfonyコマンドの組み込みコマンドで、ファイルのキャッシュやログのパミッションを修正します。
Subversionへの追加
管理すべきファイルが多くなってきたので、そろそろSubversionにファイルをコミットします。
基本的には、生成済みファイルをすべてaddして問題ないですが、config/propel.iniはignoreしてかわりにconfig/propel.ini.inをコミットします。Subversionを利用した簡単なignoreの方法は私の日記を御覧ください。cacheやlogもコミットする必要は無いでしょう。
私のやり方は、本家SymfonyプロジェクトのAskeet!のSubversionにコミットするファイルの種類が若干異なります。例えば、Propelで生成されたlib/models/om/以下にあるモデルBaseクラスはリポジトリにコミットしません。この方法ではデータベースが更新されたら、
symfony build-model
を各開発者が行わなくてはなりません。
頻繁に自動再生成されるファイルについては、コミットしないのが私のコミット方針です。もちろん本家のようにコミットしてしまう方法でも問題ありません、むしろPropelが安定してきた最近ではPropelが自動生成したom以下もコミットした方が良いかもしれません。ここら辺の方針はいずれまた考え直してみたいと思います。
リポジトリから新規にチェックアウト(svn checkout)したら、ローカル環境に対応するため必ず./bootstrapを実行してください。自分のPathをみてpropel.iniを作成し、logとcacheのパミッションを適切に設定してくれます。

