以前データベース環境をコマンド一発で切り替えるのエントリで紹介したconfigureタスクにういて、config/config.phpも修正対象に含めるべきじゃないか?とコメントを頂いたのでやってみました。 最初はpropel.iniとかと同じようにキーワード置換用のテンプレートを用意するだけかと思っていましたが、話はそんなに簡単ではありませんでした。
sfConfigure
以前公開したsfConfigurePluginを更新しました。リポジトリのURLは以下の通りです。
http://svn.tracfort.jp/svn/dino-symfony/plugins/sfConfigurePlugin
プラグインのインストール方法のまとめを参考にしてインストールしてみてください。
以下のタスクがsymfonyコマンドに追加されます。
configure > configure this project bootstrap > run bootstrap
また、以下のようなコマンドも作ってみました。
init-bootstrap > generate bootstrap init-configure > setup configure
init-bootstrapは、bootstrapスクリプトを生成します。init-configureはconfig/databases.yml,config/propel.ini,config/config.phpからテンプレートファイルを作成します。
config/config.php生成時の問題
要は./symfonyコマンドはconfig/config.phpをincludeしているので.config/config.phpが無い状態で/symfonyコマンドを利用してconfig/config.phpを生成する事はできません。config/config.phpを生成する時には/usr/local/bin/symfonyなどのインストールされたコマンドを利用すべきです。
以下はconfigureの実行例です
/usr/local/bin/symfony configure\ --with-dsn=mysql://root:@localhost/dbname\ --with-symfony-lib-dir="/var/symfony/lib"\ --with-symfony-data-dir="/var/symfony/data"
ラッパーによる解決方法
利用を切り替えるのが面倒なので以前紹介したsymfonyコマンドのラッパーに手を加えて使っています。
#!/usr/bin/env ruby # $Id: symfony,v 1.4 2006/12/16 13:13:04 tumf Exp tumf $ require "FileUtils" arg = ARGV symfony = '/usr/local/bin/symfony' begin startdir = FileUtils.pwd until File.file?("symfony") FileUtils.cd('..') raise "can't find symfony project directory" if FileUtils.pwd == "/" end symfony = "./symfony" if File.file?("config/config.php") rescue FileUtils.cd(startdir) end cmd = symfony << " " << arg.join(" ") system(cmd)
上のラッパーでは、config/config.phpの存在を調べて実行すべきコマンドを切り替えています。
config/config.phpを切り替える事で複数のバージョンのsymfonyを切り替えて使う事ができます。config.phpを切り替えたらsymfony ccをお忘れなく。

