Ayer en el trabajo me pidieron algo que a alguno de vosotros seguramente os habrán pedido en algún momento. Actualizar la versión de una tecnología con la que se trabaja en la empresa para un proyecto. En este caso concreto el reto era recompilar los estilos de un proyecto con la versión 1.0.3 de Compass. Anteriormente se estaba utilizando la versión 0.12.7 y yo, inocente, pensé que sería algo como “recompilar los css y listo”.

$ compass compile --force

No sé en que momento pensé eso, porque me equivocaba, y algo en mi fuero interno decía que no podía ser tan fácil. Por mucho que los niños de Compass digan que cómo no voy a fiarme de ellos, que ellos son muy majos y no me van a romper nada.

MENTIRA.

Primero de todo hay que decir que migrar de una versión 0.12.7 a una versión 1.0.3 en Compass supone actualizarse, siendo muy benévolos con el cálculo, unas 3 versiones. La 1.0, la 1.0.1 y la 1.0.2 si no queremos contar la 0.13. Y eso sólo significa una cosa, conduzca usted con precaución porque vienen curvas. Y de esas con las que hay que tener un poquitín de cuidado. Saltarte varias versiones de una tecnología puede traer problemas de compatibilidad y con foundation esto es lo que me pasó.

El principio

Pues eso, el jueves a salir de trabajar hablando con un par de compañeros acordamos que habría que actualizar la versión de compass con la que compilábamos las hojas de estilos de uno de los proyectos en los que trabajamos para que todos los proyectos usaran la misma versión. Algo que yo entendí que sería sencillo, recompilar con la versión nueva de compass y listo. Y no podía estar más equivocado.

El problema

Como he dicho, no podía haber estado más equivocado, parecerá una tontería pero es un error de novato pensar que si actualizas de versión de una “alfa” o “beta” a una “major release” no iba a tener ningún problema.

El hecho es que cuando compilé y obtuve el resultado, decidí hacer un diff del fichero de salida con respecto a la versión anterior del repositorio. Por si acaso. Me fui a la última línea y esto es lo que vi.

fernando-carrascosa-foundation-y-la-migracion-de-compass

Si estás leyendo esto desde un móvil quizá no veas bien la imagen, pero el archivo del repositorio termina en la línea 26371 y el resultado de mi compilación termina en la 18891, esto significa que entre uno y otro hay cerca de 8000 líneas de diferencia. Eso es un problema, podría entender que hubiera unas 100, como mucho, pero 8000 es un número a tener en cuenta, así que directamente ni me molesté en probar si el resultado final en mi entorno local era más o menos similar al que debería mostrarse, tenía muy claro que eso NO ESTABA BIEN. Y me puse a investigar.

El SCSS de Foundation

Después de un rato revisando los archivos de salida, recompilé una vez más, esta vez con el config.rb del proyecto de compass modificado para que me mostrara las rutas de los scss de los que tomaba referencia.

output_style    : expanded
relative_assets : true
line_comments   : true

Lo hice dos veces: una con la versión de origen y otra con la actualizada, así tendría la certeza de dónde estaba el error. Y lo encontré, parece ser que no estaba compilando el código escrito en el siguiente archivo:

scss/foundation/components/_global.scss

Ahora sólo faltaba averiguar el porqué.

El error de los mixins de Foundation

Había valorado varias soluciones, iniciar un proyecto de compass con todo el css de Foundation incluido como librería, o ver qué pasaba con el _global.scss, decidí revisar en internet a ver qué es lo que pasaba y si alguien había tenido el mismo problema que yo me había encontrado. Y tuve suerte.

Al parecer con el lanzamiento de la versión 1.0 de Compass cambió la forma que tenía de tratar los mixin, como se describe en este hilo del proyecto foundation en GitHub.

La solución

Después de seguir investigando y probar varias soluciones, encontré este Pull Request en el que se modifican cuatro líneas de código de dos archivos, y recuperé las líneas de código que faltaban. Mi nuevo archivo tenía 26352 líneas de código, 19 menos que el original, era un resultado aceptable. Volví a hacer un diff de los archivos y las líneas que faltaban eran líneas en blanco añadidas por Compass.

Lo que aprendí

De esto saco varias conclusiones. Como por ejemplo que no se debe tratar a la ligera un cambio de versión en cualquier tecnología. Que antes de obcecarme intentando solucionar un problema es mejor investigar y comprobar si alguien ha tenido el mismo problema que yo y si tiene solución sencilla.

Y que si puedo documentarlo para que otra persona lo tenga más fácil que yo a la hora de solucionarlo, pues mejor que mejor.