Det er mye snakk om Rack, men med mindre du selv er rammeforfatter, ser du det sjelden. Så hva er Rack? Og hvorfor skal du som applikasjonsutvikler bry deg om det?
Grunnleggende om rack
Rack er en slags mellomvare. Den ligger mellom webapplikasjonen din og webserveren. Den håndterer alle de serverspesifikke API-anropene, videresender HTTP-forespørselen og alle miljøparametrene i en hasj, og gir søknadens svar tilbake til serveren. Med andre ord, applikasjonen din trenger ikke å vite hvordan du snakker med en HTTP-server, den trenger å vite hvordan du skal snakke med Rack.
Fordeler med Rack
Dette har en rekke fordeler. For det første er det enkelt å snakke med rack (som du vil se nedenfor). For det andre, siden du bare trenger å vite hvordan du skal snakke med Rack, og Rack vet hvordan du snakker med mange forskjellige HTTP-servere, vil applikasjonen din kjøres på en av disse HTTP-serverne. Rack er som en universell adapter for webapplikasjoner.
Rack-applikasjonene i seg selv er ikke noe spesielt. Faktisk er Rack API så død enkelt, det kan beskrives i en enkelt setning:
En Rack-applikasjon er ethvert Ruby-objekt som reagerer på anrop metoden, tar en enkelt hasjparameter og returnerer en matrise som inneholder responsstatuskoden, HTTP-responsoverskrifter og svarlegemet som en rekke strenger.
Det er ganske mye det. Det høres for enkelt ut til å være sant, eller i det minste for enkelt til å være nyttig, men når det virkelig kommer til stykket, er det alt du virkelig gjør når du snakker med HTTP-servere.
Hvorfor er rack viktig?
Men videre til det virkelige spørsmålet: Hvorfor bør du som applikasjonsprogrammer bry deg om Rack? Vel først, det er alltid opplysning når det gjelder å forstå hvordan rammene dine fungerer. Men enda viktigere er det nyttige ting du kan gjøre med Rack. Viktigst: mellomvare.
Nå høres dette litt rart ut. Men et ekstra lag mellom applikasjonen din og Rack kan være en god ting, og implementere funksjoner som bare vil rote applikasjonen din. Hva denne mellomvaren gjør er bare å ta forespørselen fra Rack, gi den videre til applikasjonen din, få den svar, legg til noe i det eller filtrer det eller noe langs disse linjene og send svaret tilbake til Rack. Dette kan brukes til å implementere veldig interessante små funksjoner som en server-agnostisk logger, eller en forespørsel sanity checker, eller litt mellomvare som e-post en administrator hver gang applikasjonen din kommer tilbake med en 404. Ingen av disse funksjonene trenger å rote opp applikasjonen din, de kan implementeres som mellomvare med Rack.