Borrar caché automáticamente en Drupal 8 con Robo y DrupalConsole en cada cambio de código

He estado curioseando con Robo, un ejecutor de tareas al estilo de Gulp pero en PHP.
En el entorno javascript es muy común compilar el javascript o el css según se van produciendo los cambios en el código.
He conseguido hacer lo mismo utilizando Robo y DrupalConsole.
DrupalConsole puede borrar la caché del sitio con el comando
drupal cr all
Podemos hace que Robo ejecute prácticamente cualquier comando, tanto en local como via ssh.
Para utilizarlo yo me he bajado el phar de su web, www.robo.li.
Luego te vas a un directorio donde hacer experimentos y ejecutas "robo init". Esto creará un fichero plantilla llamado RoboFile.php, es ahí donde haremos nuestra magia :D
Robo dispone de los métodos taskExec() y taskWatch() El primero es para ejecutar en el momento una tarea, el segundo se dispara con un evento.

El siguiente código (muy simple) ilustra cómo se puede borrar la caché de un Drupal 8 mediante DrupalConsole automátizando el evento de cambiar su código mediante Robo:

/**
* This is project's console commands configuration for Robo task runner.
*
* @see http://robo.li/
*/
class RoboFile extends \Robo\Tasks
{
protected $path = "/home/leandro/public_html/drupal8.dev";
protected $code_dir = "/home/leandro/public_html/drupal8.dev/modules/custom/dni_login/";

public function cc()
{
$this->say("Clearing cache in " . $this->path);
$this->taskExec('drupal cr all --root=' . $this->path)->run();
}

public function watch()
{
$this->taskWatch()
->monitor($this->code_dir, function ($event) {
if ($event->getTypeString() !== 'modify') {
return;
} else {
$this->cc();
}
})
->run();
}
}

Y eso es todo, espero que el código os sirva para jugar un rato! :)

drupal8

Añadir nuevo comentario

Type the characters you see in this picture. Type the characters you see in the picture; if you can't read them, refresh the CAPTCHA or submit the form and a new image will be generated. Not case sensitive.