Všechno, co je špatně, najednou

Díl 8 ze 9 — ./blog.sh v1.2

Každé přerušení v tomto enginu je správné tam, kde stojí. Každé také hlásí přesně jeden problém – ten první, odkudkoli v kódu, kde si ho náhodou všimlo. Oprav ho, spusť znovu, potkej další. Opakuj, dokud se to nesestaví.

./blog.sh doctor přečte, co je na disku, a řekne ti všechno v jednom průchodu, celými větami, každou s řádkem opravy napsaným pro někoho, kdo neví, ve kterém souboru to nastavení bydlí.

Jde po tichých selháních

Hlasitá chyba se aspoň ohlásí. Problémy, na které se doctor soustředí, jsou ty, které nikdy nic neřeknou:

  • Neznámé časové pásmo. Ruby beze slova spadne na UTC a každý příspěvek je od té chvíle datovaný špatně.
  • Banner, jehož deklarovaný rozměr už neodpovídá souboru. Každá stránka při načítání poskočí a nikde není nic tak rozbité, aby si to stěžovalo.
  • Widget, který nikdy nemůže nic ukázat – nastavený špatným druhem identifikátoru, navždy vykreslující prázdný rámeček.
  • Písmo jmenované v konfiguraci, ale chybějící v assets/fonts/. Prohlížeč potichu sáhne po náhradě a web prostě není ten web, který jsi navrhl.
  • Backend nasazení nastavený napůl.
  • Text z ukázky stále na místě, kde by ho četli návštěvníci – rámeček „o webu", který pořád popisuje ukázkový web enginu, ne ten tvůj.

--online se navíc ptá, jestli feedy, analytický skript a přístupový token ještě odpovídají. Tokeny vyprší potichu; to je jejich povaha.

Běží, když nic jiného nepoběží

To je část, která si vyžádala nejvíc péče. Doctor pracuje i na konfiguracích příliš rozbitých na to, aby je cokoli jiného načetlo – včetně takové, jejíž YAML se nedá rozebrat, což je přesně chvíle, kdy ho chceš.

Související, a vydané zároveň: syntaktická chyba YAML v config/site.yml je teď věta, ne backtrace z Psych z toho vstupního bodu, který soubor náhodou četl první. Pojmenuje řádek, sloupec, tři obvyklé příčiny – tabulátor tam, kam patří mezery, chybějící uvozovka, dvojtečka uvnitř hodnoty bez uvozovek – a ukáže na doctor.

Chyby a rady jsou různé věci

Návratový kód je nenulový jen u chyb. Varování jsou rada, a rada, která shodí tvoje sestavení, není rada.

Tenhle rozdíl je důvod, proč je doctor bezpečné dát do cronu nebo do kontroly před nasazením: zastaví tě, když je něco skutečně špatně, a jen promluví, když něco jen stojí za to vědět.

Proč se s tím obtěžovat u tak malého nástroje

Protože „nefunguje to a nevím proč" je místo, kde to lidé vzdávají, a vlastní způsoby selhání enginu byly ty, které tuhle větu vyvolávaly nejspíš. Hlášky přerušení byly všechny přesné. Přesnost po jednom problému je pořád bludiště.

Komentáře