DEV Community

Cover image for Pokedex: Actualizar Laravel de la versión 8.x a la 9.x
Chris López
Chris López

Posted on • Edited on

Pokedex: Actualizar Laravel de la versión 8.x a la 9.x

Hace un año estuve realizando algunas publicaciones, las cuales hacen referencia a Laravel, en dichas publicaciones construimos un "Pokedex" desde 0.

Estas publicaciones se pueden consultar en el siguiente enlace:

Pokedex con Laravel

Ahora que ha pasado este periodo de tiempo, me propuse a actualizar el proyecto, el cual contaba con la versión de Laravel 8.x, por tal motivo, el requerimiento principal, será actualizar a la versión mas reciente.
De igual forma, estarémos actualizando a la versión 8.1 de PHP.

Cuando se escribió este articulo, la versión mas actual de Laravel es la 9.27 con versión mínima de PHP, que es la 8.0.

Prerrequisitos

Para poder hacer esta actualización se debe tener instalado lo siguiente:

  • PHP 8.1
  • Ubuntu 20.04 o WSL2 en Windows
  • Composer
  • Git

Primeros pasos

Antes de continuar, les recomiendo que sigan la guía de instalación que tiene Laravel para cuando liberan las versiones, en este caso fue de 8 a 9, les dejo el link:

Upgrade Guide Laravel From 8.x to 9.x

Si actualmente no usas tantos paquetes, en esa guía simplemente van a llegar al paso que dice "Upgrade Dependencies", en caso contrario, les recomiendo una auditoría exhaustiva con los paquetes que usan y revisar los repositorios de los mismos, para ver si tienen versiones para Laravel 9 en este caso.

Instalación

Siguiendo estas recomendaciones; el "Pokedex" no usa paquetes externos, es un proyecto sencillo que nos da una inducción a Laravel, por lo cual vamos a codificar, y lo primero que vamos realizar es la modificación del archivo "composer.json".

Sustituimos con lo siguiente en la sección de "require" del archivo:

"require": {
        "php": "^8.0||^8.1",
        "fruitcake/laravel-cors": "^v2.0.5",
        "guzzlehttp/guzzle": "^7.5.0",
        "laravel/framework": "^v9.27.0",
        "laravel/tinker": "^v2.7.2",
        "laravel/ui": "^3.3"
    },

Enter fullscreen mode Exit fullscreen mode

Si ponemos atención a la diferencia, solamente actualizamos versiones y quitamos un paquete llamado "fideloper/proxy", mas adelante sabremos porqué eliminamos esta librería.

Ahora modificamos la sección de "require-dev":

"require-dev": {
        "spatie/laravel-ignition": "^1.4.0",
        "fakerphp/faker": "^1.9.1",
        "laravel/sail": "^1.0.1",
        "mockery/mockery": "^1.4.4",
        "nunomaduro/collision": "^v6.2.1",
        "phpunit/phpunit": "^9.5.24"
    },

Enter fullscreen mode Exit fullscreen mode

En esta parte, actualizamos versiones y sustituimos el paquete "facade/ignition" por "spatie/laravel-ignition".

Una vez modificado el archivo "composer.json" borramos el archivo "composer.lock", ya que está ligado a la versión 8 y nos puede arrojar errores en la instalación si lo dejamos así.

Después de borrar el archivo "composer.lock" ejecutamos el siguiente comando:

composer install
Enter fullscreen mode Exit fullscreen mode

Instalamos las dependencias de Javascript:

npm install
Enter fullscreen mode Exit fullscreen mode

Copiamos el archivo de configuración de Laravel:

cp .env.example .env
Enter fullscreen mode Exit fullscreen mode

Probamos que sirva la configuración:

php artisan key:generate
Enter fullscreen mode Exit fullscreen mode

Test en browser de la instalación

Aunque de cierta manera nos sirva el comando "artisan" después de configurar la versión de Laravel, tendremos que probar que todo nuestro Pokedex se ejecute sin errores en el browser.

Para esto utilizaremos "Laravel Sail", la configuración como tal no la mencionaré aquí, ya que previamente en las publicaciones del "Pokedex" se mostro como se configura; solamente configuraremos el servicio de MariaDb.

Pueden encontrar la publicación de Pokedex con Sail aquí:

The Pokedex Project — Desplegando nuestro ambiente de desarrollo con Laravel Sail(2)

Una vez configurado, levantamos los servicios de Sail:

sail up -d
Enter fullscreen mode Exit fullscreen mode

En este caso, se uso un alias para ejecutar el comando de Sail, recordemos que se encuentra en vendor/bin

Probamos que los servicios se hayan levantado correctamente:

sail ps
Enter fullscreen mode Exit fullscreen mode

Ya con los servicios levantados, abrimos nuestro browser y ponemos el localhost que nos indica el comando anterior y nos arrojará un error:

Error: Paquete Fideloper Proxy

Para la versión 9, dejaron de usar "fideloper/proxy" y usaron una librería que ya viene en el core de Laravel, la cual se encuentra en "Illuminate/Http/Middleware/TrustProxies".

Entonces, para que ya no arroje dicho error, modificaremos el archivo TrustProxies.php, el cual se encuentra en la carpeta de Middleware con lo siguiente:

<?php

namespace App\Http\Middleware;

use Illuminate\Http\Middleware\TrustProxies as Middleware;

Enter fullscreen mode Exit fullscreen mode

Realizando estos cambios, probamos de nuevo en nuestro browser y tendremos el "Pokedex" con la versión mas reciente de Laravel:

Pokedex con Laravel

Los cambios que se realizaron en esta publicación, los puedes encontrar en el siguiente PR:

https://github.com/krsrk/pokedex-laravel/pull/3

Top comments (0)