Symfony 1.4 でビルドされたプロジェクトがあり、複数の環境があります。各開発者は、ローカル マシンに独自のコピーをインストールしているため、独自の環境を持っています。
index.php で環境を動的に設定できますが、CLI タスクでこれを行うにはどうすればよいですか?
もちろん、すべてのタスクで --env=myenvironment を使用することもできますが、index.php と同じロジックを使用できるようにしたいと考えています。
Symfony 1.4 でビルドされたプロジェクトがあり、複数の環境があります。各開発者は、ローカル マシンに独自のコピーをインストールしているため、独自の環境を持っています。
index.php で環境を動的に設定できますが、CLI タスクでこれを行うにはどうすればよいですか?
もちろん、すべてのタスクで --env=myenvironment を使用することもできますが、index.php と同じロジックを使用できるようにしたいと考えています。
sfContext::getInstance()->getConfiguration()->getEnvironment()
この質問には多くの意見があることがわかりましたので、参考までに、私が思いついた解決策を投稿しています。
最終的に、Web と CLI の両方にアクセスするためのソリューションを思いついたので、インストールごとに Subversion に影響を与えることなく、使用する環境を決定できます。
http://www.4pmp.com/2010/10/programmatically-set-environment-for-symfony-project/
おそらく、タスクでこれに似たことができます:
class MyTask extends sfBaseTask
{
protected function configure()
{
// Env config file
$file = sfConfig::get("sf_config_dir") . DIRECTORY_SEPARATOR . "environment.cfg";
$env = (file_exists($file) ? file_get_contents($file) : "prod");
$this->addOptions(array(
new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', $env),
}
}
上記は機能するはずです。environment.cfg ファイルが存在しない場合は、デフォルトで「prod」環境になります。これは、ファイルに環境だけがあることも前提としています (例: 'prod'、'dev'、'slappythefish' など)。