O tom sa veľa hovorí stojan, ale ak nie ste autorom rámca, vidíte to len zriedka. Čo je to Rack? A prečo by ste sa ako vývojár aplikácie mali zaujímať?
Základy regálu
Rack je druh middleware. Je umiestnená medzi vašou webovou aplikáciou a webovým serverom. Spracováva všetky volania API špecifické pre server, odovzdáva požiadavku HTTP a všetky parametre prostredia v hashe a dáva vašej aplikácii odpoveď späť na server. Inými slovami, vaša aplikácia nemusí vedieť, ako hovoriť so serverom HTTP, musí vedieť, ako hovoriť s Rackom.
Výhody Racku
To má množstvo výhod. Po prvé, rozhovor s Rackom je jednoduchý (ako uvidíte nižšie). Po druhé, keďže potrebujete iba vedieť, ako hovoriť s Rackom, a Rack vie, ako hovoriť s mnohými rôznymi servermi HTTP, vaša aplikácia sa spustí na ktoromkoľvek z týchto serverov HTTP. Rack je ako univerzálny adaptér pre webové aplikácie.
Samotné aplikácie Rack nie sú ničím špeciálnym. V skutočnosti je API Racku tak jednoduché, že ho možno popísať v jednej vete:
Aplikácia Rack je akýkoľvek objekt Ruby, ktorý reaguje na volanie metóda, vezme jeden hash parameter a vráti pole obsahujúce kód stavu odpovede, hlavičky odpovedí HTTP a telo odpovede ako pole reťazcov.
To je do značnej miery. Znie to príliš jednoducho, aby to bola pravda, alebo aspoň príliš jednoduché, aby to bolo užitočné, ale keď to naozaj príde, to je všetko, čo skutočne robíte, keď hovoríte so servermi HTTP.
Prečo je Rack dôležitý?
Ale na skutočnú otázku: Prečo by ste sa ako aplikačný programátor mali zaujímať o Racka? Po prvé, vždy existuje osvietenie v porozumení toho, ako funguje váš rámec. Ale čo je dôležitejšie, s Rackom môžete robiť užitočné veci. Najdôležitejšie je, že middleware.
Teraz to znie trochu čudne. Ďalšia vrstva medzi vašou aplikáciou a Rackom však môže byť dobrá vec a implementovať funkcie, ktoré by vašu aplikáciu len preplietli. Čo tento middleware robí, je jednoducho prevziať žiadosť od spoločnosti Rack, preniesť ju do svojej aplikácie a získať ju odpovedať, pridať k nemu niečo alebo ho filtrovať alebo niečo v týchto riadkoch a potom odovzdať odpoveď späť Rack. To sa dá použiť na implementáciu veľmi zaujímavých drobných funkcií, ako je napríklad serverovo agnostický záznamník alebo žiadosť alebo trochu middleware, ktorý e-mailom správcovi zakaždým, keď sa vaša aplikácia vráti s 404. Žiadna z týchto funkcií nemusí zaplniť vašu aplikáciu, môžu byť implementované ako middleware s Rackom.