Todos los artículos

Laravel 11.24 Lanzado

Julian Beaujardin
Julian Beaujardin September 25th, 2024

El equipo de Laravel lanzó la versión 11.24 esta semana, con nuevas abreviaturas para falsificaciones de procesos (Process fakes), un método nullOnUpdate() para definiciones de claves foráneas, soporte para reintentar múltiples IDs de lote al reintentar trabajos, y más.

Una breve nota: en el momento de escribir este artículo, el auto-descubrimiento de comandos de consola en la ruta app/Console/Commands estaba roto en la versión v11.24.0. Este problema se solucionó rápidamente en la v11.24.1.

Recomendaría esperar a una actualización del parche, ya que esto podría confundirte si actualizas y faltan comandos de consola en la aplicación.

Añadir prependLocation() a la Fábrica de Vistas

Noboru Shiroiwa añadió el método prependLocation() a la fábrica de vistas, lo que permite usar el método con la fachada View:

// Antes
View::getFinder()->addLocation($path);     // ✅
View::getFinder()->prependLocation($path); // ✅
View::addLocation($path);                  // ✅
View::prependLocation($path);              // ❌

// Después
View::prependLocation($path);              // ✅

Añadir el método nullOnUpdate() a ForeignKeyDefinition

Gisu Nasrollahi contribuyó con el método nullOnUpdate() a la clase de esquema ForeignKeyDefinition, que indica que las actualizaciones en el modelo referenciado deben establecer el valor de la clave foránea a null.

$table->foreign('user_id')
      ->references('id')
      ->on('users')
      ->nullOnUpdate();

Permitir que BackedEnum se Use con Route::can()

@Omegadela contribuyó con soporte para enumeraciones respaldadas en el método Route::can():

// Antes
Route::post('/request', function () {...})->can(Permissions::CAN_REQUEST->value);

// Después
Route::post('/request', function () {...})->can(Permissions::CAN_REQUEST);

Añadir Abreviaturas de Resultados para Process Fakes

Jason McCreary contribuyó con dos nuevas abreviaturas de resultados para falsificaciones de procesos en pruebas. El primer ejemplo es una abreviatura para establecer el código de salida. El segundo ejemplo es una abreviatura para lanzar una excepción.

Process::fake([
    'php -l script.php' => 255,
    'cat README.txt' => new \RuntimeException('mensaje de excepción falso'),
]);

Aquí hay un ejemplo de la falsificación en acción a partir de las pruebas de la solicitud de extracción (Pull Request):

// Ejemplo de código de salida
$factory = new Factory;
$factory->fake(['ls -la' => 1]);

$result = $factory->run('ls -la');
$this->assertSame(1, $result->exitCode());
$this->assertFalse($result->successful());

// Ejemplo de excepción
$this->expectException(\RuntimeException::class);
$this->expectExceptionMessage('mensaje de excepción falso');

$factory = new Factory;

$factory->fake(['cat me' => new \RuntimeException('mensaje de excepción falso')]);

$factory->run('cat me');

Soporte para Múltiples IDs de Lote al Reintentar Trabajos Fallidos

Sean Kegel actualizó el comando queue:retry-batch para aceptar múltiples IDs, de modo que se puedan reintentar varios trabajos a la vez:

php artisan queue:retry-batch \
  '9d0ed667-8c3a-4385-8a07-aff118a21e5c' \
  '9d0ed6f1-b8dd-486b-8761-f89de0fb68e3'

Notas de la versión

Puedes ver la lista completa de nuevas características y actualizaciones a continuación, y la diferencia entre 11.23.0 y 11.24.0 en GitHub. Las siguientes notas de la versión provienen directamente del changelog: