Det är mycket prat om Kuggstång, men såvida du inte själv är en ramförfattare, ser du det sällan. Så vad är Rack? Och varför ska du som applikationsutvecklare bryr dig om det?
Grunderna i racket
Rack är ett slags mellanprogram. Det ligger mellan din webbapplikation och webbservern. Den hanterar alla serverspecifika API-samtal, vidarebefordrar HTTP-begäran och alla miljöparametrar i en hash och ger din applikations svar tillbaka till servern. Med andra ord, din applikation behöver inte veta hur man pratar med en HTTP-server, den behöver veta hur man pratar med Rack.
Fördelar med Rack
Detta har ett antal fördelar. Först är det enkelt att prata med Rack (som du ser nedan). För det andra, eftersom du bara behöver veta hur du pratar med Rack och Rack vet hur man pratar med många olika HTTP-servrar kommer din applikation att köras på någon av dessa HTTP-servrar. Rack är som en universaladapter för webbapplikationer.
Själva Rack-applikationerna är inget speciellt. I själva verket är Rack API så död enkelt, det kan beskrivas i en enda mening:
En Rack-applikation är alla Ruby-objekt som svarar på ring upp metod, tar en enda hash-parameter och returnerar en matris som innehåller svarstatuskoden, HTTP-svarhuvuden och svarskroppen som en rad strängar.
Det är ganska mycket det. Det låter för enkelt för att vara sant eller åtminstone för enkelt för att vara användbart, men när det verkligen kommer till det är det allt du verkligen gör när du pratar med HTTP-servrar.
Varför är rack viktigt?
Men vidare till den verkliga frågan: Varför ska du som applikationsprogrammerare bryr dig om Rack? Tja först, det finns alltid upplysning i att förstå hur ditt ramverk fungerar. Men ännu viktigare, det finns användbara saker du kan göra med Rack. Viktigast av allt: mellanprogram.
Det här låter lite konstigt. Men ett extra lager mellan din applikation och Rack kan vara bra, och implementera funktioner som bara skulle göra din applikation rörig. Vad den här mellanvaran gör är att helt enkelt ta begäran från Rack, skicka den till din applikation, få den svar, lägg till något i det eller filtrera det eller något längs dessa linjer och skicka sedan svaret tillbaka till Kuggstång. Detta kan användas för att implementera mycket intressanta små funktioner som en server-agnostisk logger eller en begäran sanity checker, eller lite mellanprogram som skickar e-post till en admin varje gång din ansökan kommer tillbaka med en 404. Ingen av de här funktionerna behöver skruva upp din applikation, de kan implementeras som mellanprogram med Rack.