Er wordt veel over gepraat Rek, maar tenzij je zelf een framework-auteur bent, zie je het zelden. Dus wat is Rack? En waarom zou u er als applicatieontwikkelaar om moeten geven?
Rack Basics
Rack is een soort middleware. Het zit tussen uw webtoepassing en de webserver. Het verwerkt alle serverspecifieke API-aanroepen, geeft het HTTP-verzoek en alle omgevingsparameters door in een hash en geeft het antwoord van uw applicatie terug aan de server. Met andere woorden, uw app hoeft niet te weten hoe hij met een HTTP-server moet praten, hij moet weten hoe hij met Rack moet praten.
Voordelen van Rack
Dit heeft een aantal voordelen. Ten eerste is praten met Rack eenvoudig (zoals je hieronder zult zien). Ten tweede, aangezien u alleen hoeft te weten hoe u met Rack moet praten en Rack weet hoe u met veel verschillende HTTP-servers moet praten, zal uw toepassing op elk van deze HTTP-servers worden uitgevoerd. Rack is als een universele adapter voor webapplicaties.
De Rack-applicaties zelf zijn niets bijzonders. In feite is de Rack API zo doodeenvoudig dat het in één zin kan worden beschreven:
Een Rack-toepassing is elk Ruby-object dat reageert op de bellen methode, neemt een enkele hash-parameter en retourneert een array met de responsstatuscode, HTTP-responsheaders en de responsbody als een array van strings.
Dat is het eigenlijk wel. Het klinkt te simpel om waar te zijn, of op zijn minst te simpel om nuttig te zijn, maar als het er echt op aankomt, is dat alles wat je echt doet als je met HTTP-servers praat.
Waarom is Rack belangrijk?
Maar op de echte vraag: waarom zou je als applicatieprogrammeur om Rack moeten geven? Ten eerste is er altijd verlichting om te begrijpen hoe uw raamwerk werkt. Maar wat nog belangrijker is, er zijn handige dingen die u met Rack kunt doen. Het belangrijkste is: middleware.
Dit klinkt een beetje vreemd. Maar een extra laag tussen uw applicatie en Rack kan een goede zaak zijn en functies implementeren die uw applicatie alleen maar onoverzichtelijk maken. Wat deze middleware doet, is simpelweg het verzoek van Rack aannemen, doorgeven aan uw applicatie en het verkrijgen antwoord, voeg er iets aan toe of filter het of iets in deze richting en geef het antwoord vervolgens weer door aan Rek. Dit kan worden gebruikt om zeer interessante kleine functies te implementeren, zoals een serveronafhankelijke logger of een verzoek sanity checker, of een beetje middleware die een admin e-mailt telkens wanneer uw applicatie terugkomt met een 404. Geen van deze functies hoeft uw applicatie te vervuilen, ze kunnen worden geïmplementeerd als middleware met Rack.