configureでconfig.phpも切り替える

以前データベース環境をコマンド一発で切り替えるのエントリで紹介した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をお忘れなく。

Leave a Reply

You must be logged in to post a comment.