IronWoods.es

Desarrollo web

Blog / Laravel / Artisan: clear commands

Después de ciertas acciones en Laravel o si parece que la aplicación no actualiza cambios recién introducidos, usamos diferentes comandos de limpieza de artisan.

  • php artisan cache:clear Limpiar cache
  • php artisan config:clear Limpiar configuración
  • php artisan route:clear Limpiar rutas
  • php artisan view:clear Limpiar vistas
  • php artisan optimize Limpiar todo

Otros comandos de limpieza

Cuando estamos "construyendo" la base de datos, es muy habitual ejecutar continuamente migraciones y seeders, por ejemplo, con:

php artisan migrate:refresh --seed

Sin embargo, ciertos fallos, no permitirán refrescar las migraciones. Deberemos eliminar todas las tablas de la base de datos antes de volver a ejecutar la migración, con el comando:

php artisan db:wipe

Limpieza en producción sin acceso SSH

Cuando no existe la posibilidad de ejecutar comandos artisan en terminal, podemos hacerlo mediante código, por ejemplo:


Artisan::call('cache:clear');

Deberíamos disponer algún mecanismo para ejecutar el script, desde el panel de administración, por ejemplo, un enlace que lleve a la ejecución del comando:


Route::get('clear-all', function()
{
    Artisan::call('optimize:clear');

    return redirect('dashboard')
        ->with(
            'success',
            Artisan::output()
        );
})->middleware([
    'auth',
    'cms-admin-actions'
]);

¡Cuidado con las rutas!

En la documentación de Laravel, desde la versión 5.5 y hasta la versión 7.x, aparece una advertencia con respecto a las rutas con closures, por ejemplo, esta:


Route::get('welcome', function ()
{
    return view('welcome');
});

Se producirá el error:

LogicException

Unable to prepare route [welcome] for serialization. Uses Closure

al ejecutar: @icodephp artisan route:clear@endicode o @icodephp artisan optimize@endicode.


La ejecución de la "limpieza" de rutas durante el despliegue, permite optimizar la carga de las rutas de la aplicación, muy importante si hay muchas rutas. Estas deberán ser de tipo: FooController@bazMethod.