Nine-bladed sword

21. 10. 2012 16:14 Petr Blahoš

I od javascriptařů se můžeme něco přiučit. Nedávno jsem viděl v akci framework Este (když už o tom mluvím, tak články Dana Steigerwalda na Zdrojáku dávají smysl), a v něm je jedna pro mě nová věc. Uloží styl ve stylusu (něco jako lesscss), hlídač souborů uvidí, že se změnil, a hned zavolá překlad. Uloží coffee script, a stane se vpodstatě totéž. Máte to ve svém frameworku? Já ne. Hmmm, já sice v coffee scriptu nepíšu, ale ten css preprocesor je pro mě s tímto přístupem hned mnohem přitažlivější.

Když to porovnám s mým dosavadním pohledem na preprocesory, což je buď nějaký extra kompilační krok, nebo wsgi middleware, který bude za běhu překládat, tak tohle mi přijde takové mnohem přístupnější. Hlavně v tom, že hned vidím případné chyby překladu – mám jistotu, že nic někam nezapadne. Taky, jak říkala už babička Boženy Němcové, co můžeš přeložit hned a nechat server, ať to posílá už přeložené, nenechávej na middleware. Takže ten posun je asi takovýhle: dosud můj framework automaticky re-loadnul aplikaci, když se změnil pythonový kód (něčeho, co už bylo v paměti). Klasika. Teď si k tomu přidám thread, který bude překládat css. A teď to hlavní: Testy.

Stejně, jako se při změně přeložilo css a scripty, tak se provedly testy. Pokud je člověk často-ukládací, jako já, tak mu to možná způsobí pár falešných poplachů, než se věci ustálí, ale s tím půjde žít. Mě to bude nutit psát si testy tak, aby proběhly strašně rychle. Testy si pravděpodobně rozdělím na 2 kategorie – jednotkové, a funkční (nebo jak se teď říká integrační). Někteří lidé jsou toho názoru, že ty intergrační se nemají dělat vůbec, já ještě tak daleko nejsem, každopádně to automatické testování se asi bude týkat jen těch jednotkových. Proč? Protože když uložím ten pythonový zdroják, tak relevantní test se musí dokončit, no, jak rychle? Do sekundy? Snad do dvou by mohlo stačit. Vlastně, když uvažuju webovou aplikaci, tak tam asi budě nějaký ten javascript, takže budou probíhat ještě jednotkové testy javascriptu.

Znovu se ptám: Umí to váš framework?

A teď konečně, co mi vrtá hlavou. Jak do toho zamontovat google closure compiler? Používám mako templates, takže mám modularitu, kterou bych nerad ztratil. Kvůli té modularitě zcela jistě nepůjde použít closure compiler přímo na šablony. Obávám se, že tady se ode mě bude vyžadovat trochu větší myšlenkový posun.

Teď nevím. Neříkala ta babička Boženy Němcové, že dobrý vývojář sbírá peří i za cizími ploty, aby se jím mohl chlubit?

Sdílet

  • 24. 10. 2012 21:57

    TT (neregistrovaný)

    Ne out of the box, ale potřebné nástroje jsou. Tedy umí (Ruby on Rails). Po uložení souboru se v prohlížeči zobrazí daná stránka a proběhnou relevantní testy (ty, které se stránky týkají, a pokud minule nějaké selhaly, tak jen ty, aby to bylo rychlejší).
    Ale nepřišel jsem na to, jak dělat testy tak, aby proběhly strašně rychle a zároveň nebyly jen duplikát kódu.