Todos los artículos

Una nueva página de excepción mínima predeterminada con soporte para modo oscuro en Laravel 11.9

Julian Beaujardin
Julian Beaujardin May 28th, 2024

Esta semana, el equipo de Laravel lanzó la versión 11.9, que incluye una nueva página de excepción predeterminada, una forma de evitar que se ejecuten comandos destructivos, un método de cola withoutDelay() y más.

Nueva página de excepción predeterminada

Laravel ahora viene con una página de excepción predeterminada mínima cuando su aplicación está en modo de depuración. La página de error actualizada admite el modo claro y oscuro:

Nueva página de excepción predeterminada en Laravel 11.9 (modo oscuro)

Nueva página de excepción predeterminada en Laravel 11.9 (modo oscuro)

La página de Excepción continuará mostrando la vista predeterminada de Symfony (a menos que hayas definido un renderizador personalizado) cuando la depuración sea falsa:

Página de excepción predeterminada con APP_DEBUG=false

Página de excepción predeterminada con APP_DEBUG=false

Esta actualización solo afecta a las nuevas aplicaciones de Laravel, por lo que las aplicaciones existentes seguirán usando Ignition si están instaladas. Si desea seguir usando la página de excepción Spatie Ignition en nuevas aplicaciones de Laravel, puede instalarla con Composer:

composer require spatie/laravel-ignition

Consulte Solicitud de extracción #51261 y #51587 para obtener más información. detalles.

Prevenir comandos destructivos

Jason McCreary y Joel Clermont contribuyeron con un trait Prohibitable junto con un código que previene la ejecución de comandos destructivos. También puedes agregar esto a tus comandos personalizados de Artisan que podrían tener comportamientos destructivos que no deseas ejecutar en ciertos entornos (usualmente producción):

use Illuminate\Console\Command;
use Illuminate\Console\Prohibitable;

class SomeDestructiveCommand extends Command
{
    use Prohibitable;
}

// SomeDestructiveCommand::prohibit($this->app->isProduction());

El framework de Laravel incluye algunos comandos de base de datos que incluyen el trait Prohibitable, como db:wipe, migrate:fresh, migrate:refresh y migrate:reset. Puedes prohibirlos individualmente o usar el Facade de DB para prohibir todos los comandos mencionados:

// Prohíbe: db:wipe, migrate:fresh, migrate:refresh y migrate:reset
DB::prohibitDestructiveCommands($this->app->isProduction());

Añadir withoutDelay() al trait Queueable

Kennedy Tedesco contribuyó con un método withoutDelay() al trait Queueable. Si un trabajo tiene un tiempo de retraso predeterminado, puedes usar esto en casos donde quieras omitir ese retraso en lugar de pasar 0 al método delay():

dispatch((new MyJob($data))->delay(0));

dispatch((new MyJob($data))->withoutDelay());

Notas de la versión

Puedes ver la lista completa de nuevas características y actualizaciones a continuación y la diferencia entre 11.8.0 y 11.9.0 en GitHub. Las siguientes notas de la versión son directamente del changelog.