Kaip naudotis stovo programa „Ruby“

Viduje ankstesnis straipsnis, jūs sužinojote, kas yra „Rack“. Laikas pradėti naudoti „Rack“ ir aptarnauti kai kuriuos puslapius.

Labas pasauli

Pirmiausia pradėkime nuo „Labas pasauliPrograma. Ši programa, nesvarbu, kokio tipo užklausai ji bus suteikta, grįš su būsenos kodu 200 (kuris yra „HTTP“ kalbėjimas „gerai“) ir eilute "Labas pasauli" kaip kūnas.

Prieš nagrinėdami šį kodą dar kartą pagalvokite apie reikalavimus, kuriuos turi atitikti bet kuri „Rack“ programa.

„Rack“ programa yra bet koks „Ruby“ objektas, kuris reaguoja į skambučio metodą, pasiima vieną maišos parametrą ir grąžina masyvą, kuriame yra atsakymo būsenos kodas, HTTP atsakymo antraštės ir atsakymo korpusas kaip masyvas stygos.
klasės „HelloWorld“
def skambutis (env)
grįžti [200, {}, [„Sveikas pasaulis!“]]
galas
galas

Kaip matote, tipo objektas Labas pasauli atitiks visus šiuos reikalavimus. Tai daroma labai minimaliai ir ne itin naudingai, tačiau ji atitinka visus reikalavimus.

Tinklalapis

Tai gana paprasta, dabar prijunkite jį prie „WEBrick“ (HTTP serverio, kuris yra kartu su

instagram viewer
Rubinas). Norėdami tai padaryti, naudojame Stelažas: prižiūrėtojas:: WEBrick.run metodas, perduokite jį Labas pasauli ir uostą, kuriame važiuoti. Dabar veiks „WEBrick“ serveris, o „Rack“ perduos užklausas tarp HTTP serverio ir jūsų programos.

Atminkite, kad tai nėra idealus būdas pradėti daiktus naudojantis „Rack“. Čia rodoma tik tam, kad būtų galima ką nors paleisti prieš nardant į kitą „Rack“ funkciją, vadinamą „Rackup“, kuri yra parodyta žemiau. Tokiu būdu naudojant „Rack:: Handler“ kyla keletas problemų. Pirma, jis nėra labai konfigūruojamas. Viskas yra sunkiai užkoduota scenarijuje. Antra, kaip pastebėsite, jei vykdysite šį scenarijų, negalėsite nužudyti programos. Tai neatsakys į „Ctrl-C“. Jei vykdote šią komandą, tiesiog uždarykite terminalo langą ir atidarykite naują.

#! / usr / bin / env rubinas
reikalauti „stovo“
klasės „HelloWorld“
def skambutis (env)
grįžti [200, {}, [„Sveikas pasaulis!“]]
galas
galas
Rack:: prižiūrėtojas:: WEBrick.run (
HelloWorld.new,
: Uostas => 9000
)

Susirinkimas

Nors tai padaryti yra gana lengva, tačiau nėra taip, kaip paprastai naudojamas „Rack“. Paprastai stovas naudojamas su įrankiu, vadinamu reketu. „Rackup“ padaro daugiau ar mažiau tai, kas buvo aukščiau esančiame kodo skyriuje, bet labiau tinkamu būdu. Rinkimas vykdomas iš komandinės eilutės ir jam suteikiama a .ru „Pakartotinis failas“. Tai tik „Ruby“ scenarijus, kuris, be kita ko, teikia programą „Rackup“.

Labai paprastas aukščiau pateiktas „Rackup“ failas atrodytų maždaug taip.

klasės „HelloWorld“
def skambutis (env)
grįžti [
200,
{'Content-Type' => 'text / html'},
["Labas pasauli!"]
]
galas
galas
paleiskite „HelloWorld.new“

Pirma, mes turėjome padaryti vieną mažą pakeitimą į Labas pasauli klasė. „Rackup“ veikia tarpinės programinės įrangos programa, vadinama Stelažas: „Lint“ kad normalumas patikrina atsakymus. Visuose HTTP atsakymuose turėtų būti: Turinio tipas antraštę, kad ji buvo pridėta. Tada paskutinė eilutė sukuria programos egzempliorių ir perduoda ją bėgti metodas. Idealiu atveju jūsų programa neturėtų būti parašyta vien tik „Rackup“ faile, šiame faile turėtų būti reikalinga jūsų programa į ją ir tokiu būdu sukurkite jos egzempliorių. „Rackup“ failas yra tiesiog „klijai“. Joks tikras programos kodas neturėtų būti.

Jei vykdote komandą rackup helloworld.ru, jis paleis serverį prie 9292 prievado. Tai yra numatytasis „Rackup“ prievadas.

„Rackup“ turi dar keletą naudingų funkcijų. Pirmiausia tokius dalykus kaip prievadas galima pakeisti komandų eilutėje arba specialioje scenarijaus eilutėje. Komandinėje eilutėje tiesiog įveskite a -p prievadas parametras. Pavyzdžiui: „rackup -p 1337 helloworld.ru“. Nuo paties scenarijaus, jei prasideda pirmoji eilutė #\, tada jis analizuojamas kaip ir komandinė eilutė. Taigi čia taip pat galite apibrėžti parinktis. Jei norėtumėte paleisti 1337 prievadą, pirmoji „Rackup“ failo eilutė galėjo perskaityti # \ -p 1337.