Kuidas kasutada hammasrakendust rubiinis

in eelmine artikkel, sa õppisid, mis on Rack. Nüüd on aeg hakata kasutama Racki ja teenindama mõnda lehte.

Tere, Maailm

Esiteks alustame sõnaga “Tere, Maailm”Rakendus. Olenemata sellest, millist tüüpi taotlust see antakse, saadetakse see rakendus tagasi olekukoodiga 200 (mis on HTTP-kõne "OK" jaoks) ja stringi abil "Tere, Maailm" kui keha.

Enne järgmise koodi uurimist kaaluge uuesti nõudeid, millele ükski Racki rakendus peab vastama.

Rackrakendus on iga Ruby-objekt, mis vastab kõnemeetodile, võtab ühe räsiparameetri ja tagastab massiivi, mis sisaldab vastuse olekukoodi, HTTP vastuse päiseid ja vastuse keha massiivina keelpillid.
klass HelloWorld
def kõne (env)
tagasi [200, {}, ["Tere maailm!"]]
lõpp
lõpp

Nagu näete, tüüpi objekt Tere, Maailm vastab kõigile neile nõuetele. See toimib väga minimaalselt ja pole eriti kasulik, kuid vastab kõigile nõuetele.

WEBrick

See on üsna lihtne, nüüd ühendage see WEBricki (kaasasoleva HTTP-serveriga) Rubiin). Selleks kasutame nuppu Rack:: käitleja:: WEBrick.run

instagram viewer
meetod, andke sellele eksemplari Tere, Maailm ja sadam, kus edasi sõita. Nüüd töötab WEBricksi server ja Rack edastab päringuid HTTP-serveri ja teie rakenduse vahel.

Pange tähele, see pole ideaalne viis asjade käivitamiseks Racki abil. Siin näidatakse ainult seda, et midagi saaks käivituda enne sukeldumist mõnele teisele Racki funktsioonile nimega "Rackup", mida kuvatakse allpool. Rack:: Handleri sellisel kasutamisel on mõned probleemid. Esiteks pole see eriti seadistatav. Kõik on skripti sisse kodeeritud. Teiseks, nagu näete järgmise skripti käivitamisel, ei saa te seda programmi tappa. See ei reageeri Ctrl-C-le. Selle käsu käivitamisel sulgege lihtsalt terminaliaken ja avage uus.

#! / usr / bin / env rubiin
nõudma 'rack'
klass HelloWorld
def kõne (env)
tagasi [200, {}, ["Tere maailm!"]]
lõpp
lõpp
Rack:: käitleja:: WEBrick.run (
HelloWorld.new,
: Sadam => 9000
)

Räpp

Kuigi seda on üsna lihtne teha, pole Racki tavapärane kasutamine nii. Racki kasutatakse tavaliselt tööriistaga, mille nimi on rackup. Rackup teeb enam-vähem seda, mis oli ülaltoodud koodi alumises osas, kuid kasutataval viisil. Ühendamine toimub käsurealt ja antakse a .ru „Rämpsfail.” See on lihtsalt Ruby-skript, mis muu hulgas toidab rakendust Rackupile.

Ülaltoodud väga lihtne Rackup-fail näeks välja umbes selline.

klass HelloWorld
def kõne (env)
tagasi [
200,
{'Content-Type' => 'text / html'},
["Tere, Maailm!"]
]
lõpp
lõpp
käivitage HelloWorld.new

Esiteks pidime tegema ühe pisikese muudatuse Tere, Maailm klass. Rackup töötab vahevararakendust nimega Rack:: Lint see mõistlikkus kontrollib vastuseid. Kõigil HTTP vastustel peaks olema a Sisu tüüp päis, nii et see lisati. Seejärel loob viimane rida lihtsalt rakenduse eksemplari ja edastab selle rakendusele jooksma meetod. Ideaalis ei tohiks teie taotlust kirjutada täielikult rämpsfaili, see fail peaks nõudma teie rakenduse sisseviimist ja looma selle eksemplari. Rackup-fail on lihtsalt liimitud, seal ei tohiks olla ühtegi tõelist rakenduskoodi.

Kui käivitate käsu rackup helloworld.ru, see käivitab serveri pordil 9292. See on vaikimisi ühendatav port.

Rackupil on veel mõned kasulikud funktsioonid. Esiteks saab selliseid asju nagu port muuta käsureal või skripti spetsiaalsel real. Sisestage käsurida lihtsalt a-ga -p port parameeter. Näiteks: rackup -p 1337 helloworld.ru. Skripti enda põhjal, kui esimene rida algab tähega #\, siis parsitakse see täpselt nagu käsurida. Nii saate siin määratleda ka valikud. Kui soovite käivitada pordi 1337, võis Rackup-faili esimene rida lugeda # \ -p 1337.