En ocasiones quieres ver el resultado de una tarea sin ejecutarla realmente. A continuación se explican un par de trucos para conseguirlo.
En primer lugar, te recomendamos que utilices para esta opción un nombre estándar
que todo el mundo conoce y que por tanto, todo el mundo es capaz de interpretar
correctamente. Este nombre es dry-run
y hasta la versión Symfony 1.3 la
clase sfCommandApplication
añadía por defecto una opción llamada dry-run
,
pero ahora debes añadirla manualmente (idealmente la añadirías en una clase base
como la mostrada en las secciones anteriores):
$this->addOption(new sfCommandOption('dry-run', null, sfCommandOption::PARAMETER_NONE, 'Executes a dry run');
Ahora ya puedes invocar la tarea de la siguiente forma:
./symfony my:task --dry-run
La opción dry-run
indica que la tarea no debe realizar ningún cambio. Estas
últimas palabras son realmente las importantes: "no debe realizar ningún cambio".
Cuando se ejecuta en el modo dry-run
, la tarea debe dejar todo tal y como se
encontraba antes de la ejecución, incluyendo entre otros:
- La base de datos: no insertes, actualices o borres ningún registro de la base de datos. Esto se puede conseguir mediante una transacción.
- El sistema de archivos: no crees, modifiques ni borres ningún archivo o directorio del sistema de archivos.
- Envío de emails: no envíes emails o envíalos a una dirección de prueba.
A continuación se muestra un ejemplo sencillo del uso de la opción dry-run
:
$connection->beginTransaction();
// modifica la información de la base de datos
if ($options['dry-run'])
{
$connection->rollBack();
}
else
{
$connection->commit();
}