Wenn Jekyll mal bockt
« | 05 Jan 2019 | »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.
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:
ein
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.