Todos los artículos

Laravel 11.26 Lanzado

Julian Beaujardin
Julian Beaujardin October 2nd, 2024

El equipo de Laravel lanzó la versión 11.26 esta semana, con la capacidad de detener de manera ordenada un conjunto de procesos, el uso de Enums al definir la Limitación de Tasa, un comando Artisan para crear Middleware de Trabajos y más.

Usar BackedEnum con Limitadores de Tasa

Seth Phat contribuyó con el uso de BackedEnum y UnitEnum para registrar un limitador de tasa:

use Illuminate\Support\Facades\RateLimiter;

RateLimiter::for(
    GlobalRateLimit::HUBSPOT,
    fn () => Limit::perSecond(100, 10)
);

También puedes usarlos con el middleware de trabajos en cola RateLimited:

use Illuminate\Queue\Middleware\RateLimited;

public function middleware(): array
{
    return [
        new RateLimited(GlobalRateLimit::HUBSPOT)
    ];
}

Agregar el Comando Artisan make:job-middleware

Davey Shafik contribuyó con el comando Artisan make:job-middleware para crear un nuevo middleware de trabajos en el espacio de nombres App\Jobs\Middleware:

php artisan make:job-middleware RateLimited

Agregar el Método stop() a Process y Pool

Mathias Hansen contribuyó con una actualización para detener todos los procesos en un grupo de manera ordenada:

//
// Ejemplo de proceso único
//
$process = Process::timeout(120)->start('bash import.sh');
// ...
$process->stop();

//
// Ejemplo de grupo
//
$this->pool = Process::pool(function (Pool $pool) {
    $pool->path(base_path())->command('sleep 5');
    $pool->path(base_path())->command('sleep 10');
})->start();

// Detener los procesos de manera ordenada
$this->pool->stop();

// Detener los procesos con una señal específica
$this->pool->stop($signal);

Agregar una Anotación Genérica de Fábrica con make:model

Punyapal Shah contribuyó con una actualización al comando make:model que incluirá una anotación genérica para el trait HasFactory. Esto ayudará a los IDEs a entender el tipo de fábrica que devuelve una llamada a Model::factory().

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use HasFactory;
}

Con el lanzamiento de Laravel 11.26:

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    /** @use HasFactory<\Database\Factories\PostFactory> */
    use HasFactory;
}

Notas de la Versión

Puedes ver la lista completa de nuevas características y actualizaciones a continuación, y la diferencia entre 11.25.0 y 11.26.0 en GitHub. Las siguientes notas de la versión son directamente del cambio de registro: