Wenn Jekyll mal bockt

Ein perfektes Thema zum Blog-Update: Der Blog geht nicht!

Seit ein paar Tagen wirft mir Jekyll den Fehler

… comparison of Array with Array failed in …

vor die Füsse.

Und wenn das Problem nicht gelöst wird, gibt es wieder kein Blog Update.

Jekyll-Liquid-Error


Debugging bei solchen Fehlermeldungen ist schwierig, vor allem dann, wenn Zeilennummernangaben auf ganz andere Punkte verweisen. Denn da eine Jekyll Markdown- oder HTML-Datei einen kleinen Text-Header beinhaltet, wird dieser offenbar nicht zum Code hinzugezählt, der vom Liquid-Interpreter verarbeitet wird.

Folglich muss man erst die Zeilen des Headers zur Info des gemeldeten Fehlers addieren um zur richtigen Zeilennummer zu gelangen, die den Fehler auslöst.

Wenn man das weiß, ist es kein Problem, nur wenn man das nicht weiß sucht man lange an der falschen Stelle.

In meinem Fall war es die Sortierung nach Tags, die den Fehler oben ausgelöst hatte.

“Komisch”, dachte ich, denn jeder Blog-Eintrag hatte bisher Tags definiert, also was war in den letzten Tagen anders als zuvor?

Nach ein paar Vergleichen und einem kurzen Test war die Sache klar:
Zum Jahreswechsel hatte ich die Tags 2018 und 2019 eingetragen. Als ich diese auf year2018 und year2019 änderte, verschwand der Fehler unmittelbar.

Das machte mich dann doch etwas stutzig, denn warum sollte Zahlen etwas anderes bewirken als Texte?

Und auch dieses Rätsels Lösung war per Experiment schnell gefunden:
Es fehlten die Anführungszeichen.
Bei reinen Texten kann man auf diese verzichten und die Programme erkennen von selbst, dass sie einen String bilden sollen. Doch wenn nur Ziffern enthalten sind, wird der Datentyp wahrscheinlich als Zahl entgegengenommen, die sich mit weiteren Operationen nicht verträgt.

Setzt man Anführungszeichen um den Eintrag wird (wie in fast jeder Scriptsprache) die Erzeugung eines Text-Strings garantiert.

So wurde also aus dem falschen Header:

1---
2layout: post
3title: "Happy New Year"
4date: 2019-01-01 17:48:00 +0100
5categories: [general]
6tags: [2019]
7---

ein

1---
2layout: post
3title: "Happy New Year"
4date: 2019-01-01 17:48:00 +0100
5categories: [general]
6tags: ["2019"]
7---

und schon war alles wieder gut.

Der Blog konnte wieder gebildet werden und ist jetzt auch hoffentlich brav an seinem Platz im Netz zu finden.