Ya vimos hace tiempo cómo actualizar la versión de Magento2 de forma sencilla utilizando composer, era algo tan sencillo como ejecutar algunos comandos de composer o cambiar la versión en composer.json y hacer un composer update. Esto se puede hacer sin problema siempre y cuando nuestros módulos sean compatibles con la nueva versión a la que se va actualizar. Si los módulos no son compatibles lo ideal es actualizar estos también a una versión compatible con la versión de Magento2 a la que queremos subir. Al hacer “composer update” se suelen resolver todas estas dependencias de versiones y debería descargar las últimas versiones definidas o bien mostrar cuál es el problema para no poder hacerlo. La verdad es que composer es una herramienta fantástica.
Luego están los módulos instalados “a pelo” en app/code, estos habría que descargarlos de forma manual y comprobar que todo funcione correctamente. Normalmente siempre que actualizamos módulos de Magento, ya sean del core o no, ya sea por composer o no, hay que hacer las comprobaciones oportunas para ver que todo funcione correctamente en un entorno de desarrollo y una vez que esté todo bien subir los cambios a producción. En ocasiones nos hemos encontrado que después de actualizar un módulo, la nueva versión no solo tenía cambios a nivel de UX, también tenía nuevos bugs, por eso lo de hacer las comprobaciones oportunas.
Vamos a centrarnos ya en las acciones concretas que nos llevarán a aplicar un parche vía composer en Magento2, lo más sencillo es tomar un caso práctico como ejemplo:
- En la versión Open Source de Magento 2.3.4 o 2.3.5 hay un bug conocido que hace que cuando visualizas una factura desde la administración no se muestre una fecha correcta debido a diferencias de formato según el idioma definido.
- Este problema está documentado como “issue” en el repositorio de Magento2 de github: https://github.com/magento/magento2/issues/26675.
- El problema está resuelto en las últimas versiones de Magento2 y con un parche, el pull 26701: https://patch-diff.githubusercontent.com/raw/magento/magento2/pull/26701.diff.
Paso 1. Instalar la herramienta
Primero necesitamos instalar algún “aplicador” de parches para composer, aquí tenemos unos cuantos:
- https://github.com/Loxzibit/magento2-composer-patcher
- https://github.com/netresearch/composer-patches-plugin
- https://github.com/cweagans/composer-patches (mi favorito)
Vamos a instalar este último, que es muy sencillo. Para ello ejecutamos en la raíz de nuestro proyecto Magento2 lo siguiente:
composer require cweagans/composer-patches
Paso 2. Configurar la herramienta
Para que composer sepa qué tiene que parchear necesitaremos incluirle en el apartado “extra” (fichero /composer.json) los datos siguientes:
"extra": {
"magento-force": "override",
"enable-patching": true,
"composer-exit-on-patch-failure": true,
"patches": {
"magento/framework": {
"Datetime format - Magento 2.3.5 - issue 26675": "patches/datetime_format_2_3_5.patch"
}
}
}
Paso 3. Descargar el parche
Descargamos el parche y lo situaremos en la ruta definida en el json que hemos agregado a composer.json, en este caso la ruta sería /patches/datetime_format_2_3_5.patch:
- Por ejemplo desde aquí: https://github.com/magento/magento2/commit/5ebb43bb59b97f5315ae6421fe3c1b04c6affc70.patch
- O desde aquí: https://patch-diff.githubusercontent.com/raw/magento/magento2/pull/26701.diff
Paso 4. Instalar el parche
Para instalar el parche, una vez descargado y configurada la herramienta de parchear, ejecutaremos en la raíz de nuestro proyecto Magento2 lo siguiente:
composer install
Esto hará que se borre la versión instalada de “magento/framework”, se instale la última versión de “magento/framework” que corresponde a la versión instalada de Magento2 y luego aplica el parche de forma automática:
¡No puede ser más sencillo! Esperamos que si no tenías este conocimiento te haya servido y que disfrutes tus desarrollos tanto como nosotros.