3日目:bookmarkの実装をする プロジェクトの生成と前準備

昨日まで設計した内容に基づき、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のパミッションを適切に設定してくれます。

Leave a Reply

You must be logged in to post a comment.