Limpieza elegante de Pipilines con el método finally de Laravel
- Publicado el 14 febrero, 2025
- Palabras: 199
La limpieza de Pipilines se vuelve más elegante en Laravel con el nuevo método finally. Esta incorporación simplifica la forma en que se manejan las operaciones posteriores a la canalización, independientemente de si la canalización tiene éxito o fallo.

#Uso básico
La gestión de operaciones de limpieza en pipelines requería tradicionalmente envolver el pipeline en un bloque try-finally. El nuevo método finally de Laravel agiliza este proceso al integrar la limpieza directamente en la cadena del pipeline, lo que hace que el código sea más legible y fácil de mantener. Veamos cómo funciona:
$result = Pipeline::send($deployment)
->through([PipeOne::class, PipeTwo::class])
->finally(fn () => /** perform cleanup */)
->then(fn () => $deployment->deploy());
#Ejemplo práctico
A continuación se explica cómo podría usarlo en un sistema de implementación:
class DeploymentManager
{
public function deploy(Deployment $deployment)
{
return Pipeline::send($deployment)
->through([
ValidateEnvironment::class,
BackupCurrentState::class,
UpdateDependencies::class,
RunMigrations::class
])
->finally(function () use ($deployment) {
// Always cleanup temporary files
Storage::delete("temp/{$deployment->id}");
// Release deployment lock
Cache::forget("deployment-lock:{$deployment->id}");
// Log completion timestamp
$deployment->update(['completed_at' => now()]);
})
->then(fn () => $this->finalizeDeployment($deployment));
}
protected function finalizeDeployment(Deployment $deployment)
{
return [
'status' => 'completed',
'deployment_id' => $deployment->id
];
}
}
El método finally aporta varias ventajas sobre los bloques try-finally tradicionales. Mantiene la lógica de limpieza dentro de la cadena de pipeline, lo que hace que el flujo de código sea más natural y fácil de seguir. Esto es particularmente valioso cuando se trata de operaciones complejas que requieren una limpieza adecuada de los recursos.
Piense en él como un controlador de limpieza integrado para su pipeline: garantiza que su código de limpieza se ejecute independientemente de si el pipeline tiene éxito, falla o se interrumpe. Esto se vuelve especialmente útil cuando:
- Administra recursos temporales
- Libera bloqueos o semáforos
- Limpiar archivos temporales
- Actualizar registros de estado
- Registrar estados de finalización
Por ejemplo, si su proceso de implementación crea archivos temporales o adquiere bloqueos, el método finally garantiza que se limpien incluso si ocurre un error durante el proceso de implementación.
Fuente: Harris Raftopoulos
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión