symfony1.1.1 のカスタムタスクでPropelが利用できずに困った

カスタムタスクって何?

symfony 1.1 から導入されたsymfonyをコマンドラインから利用するためのもの。1.1以前のバッチスクリプトのようにsymfonyのライブラリにアクセスできるそうです。

カスタムタスク生成コマンド

symfony generate:task [ネームスペース]:[タスク名]
例)
symfony generate:task hoge:fuga

これで lib/task の中にカスタムタスクが生成されます。
あとは、生成されたファイルの中の '// add code here' ってところに、自分のやりたいこと書いてくだけ。ラクチン。

実行するには下記のコマンドを叩く

symfony [ネームスペース]:[タスク名]
例)
symfony hoge:fuga

Propel使えないよ

当然のようにPropel使おうとしたんだけど

No connection params set for propel

って怒られました。
なんかググっても要領を得なかったので、素直にソースを調べると "sfGenerateTaskTask.class.php" に生成コードの雛型が入ってました。

どうやら、Propelを利用する場合と、利用しない場合の雛型があるようで、そのスイッチオプションは 'use-database' のようです。

改めて、カスタムタスク生成コマンド

symfony generate:task [ネームスペース]:[タスク名] --use-database=false
例)
symfony generate:task hoge:fuga --use-database=false

これで、Propelが使えるカスタムタスクが生成されます。
なんで、'--use-database=false' なのかは僕にはわかりません。'true'じゃないと気持ち悪いんですがね。
まぁ、問題があればそのうち修正されるんじゃないですか。

こっちを実行するにはアプリケーション名を引数で与える必要があるようです。

symfony [ネームスペース]:[タスク名] [アプリケーション名]
例)
symfony hoge:fuga frontend

生成されたカスタムタスクソース

<?php

class hogeFugaTask extends sfPropelBaseTask
{
  protected function configure()
  {
    $this->namespace        = 'hoge';
    $this->name             = 'fuga';
    $this->briefDescription = '';
    $this->detailedDescription = <<<EOF
The [reminder:get-source|INFO] task does things.
Call it with:

  [php symfony reminder:get-source|INFO]
EOF;
    $this->addArgument('application', sfCommandArgument::REQUIRED, 'The application name');
    // add other arguments here
    $this->addOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev');
    $this->addOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'propel');
    // add other options here
  }

  protected function execute($arguments = array(), $options = array())
  {
    // Database initialization
    $databaseManager = new sfDatabaseManager($this->configuration);
    $connection = Propel::getConnection($options['connection'] ? $options['connection'] : '');
    // add code here
  }
}
--
仕様がコロコロ変わるとつらいなぁ。
Name
Email
Your website or blog
Comment
Security code (CAPTCHA™)