V prejšnji članek, izvedeli ste, kaj je Rack. Zdaj je čas, da začnete uporabljati Rack in prikažite nekaj strani.
Pozdravljen, svet
Najprej začnimo z "Pozdravljen, svet"Prijava. Ta aplikacija se bo, ne glede na vrsto zahteve, poslana, vrnila s statusno kodo 200 (kar HTTP govori za »OK«) in nizom "Pozdravljen, svet" kot telo.
Preden preučite naslednjo kodo, ponovno razmislite o zahtevah, ki jih mora izpolnjevati vsaka aplikacija Rack.
Aplikacija Rack je vsak predmet Ruby, ki se odzove na način klica, sprejme en sam hash parameter in vrne matriko, ki vsebuje kodo stanja odziva, glave odzivov HTTP in telo odziva kot niz strune.
razred HelloWorld
kliči def (env)
vrnitev [200, {}, ["Pozdravljeni svet!"]]
konec
konec
Kot lahko vidite, predmet tipa Pozdravljen, svet bo izpolnjeval vse te zahteve. To počne na zelo minimalen in ne strašno uporaben način, vendar izpolnjuje vse zahteve.
WEBrick
To je precej preprosto, zdaj pa ga vključimo v WEBrick (HTTP strežnik, ki je priložen) Ruby). Za to uporabimo Stojalo:: Rokovanje:: WEBrick.run
metoda, posredujte primerek Pozdravljen, svet in pristanišče za zagon naprej. Zdaj se zažene strežnik WEBrick in Rack bo posredoval zahteve med strežnikom HTTP in vašo aplikacijo.Upoštevajte, da to ni idealen način za lansiranje stvari z Rackom. Tu je prikazano samo, da se nekaj poganja, preden se potopite v drugo funkcijo Rack-a, imenovano "Rackup", ki je prikazana spodaj. Uporaba Rack:: Handlerja ima na ta način nekaj težav. Prvič, ni zelo nastavljiv. Vse je težko zapisano v scenarij. Drugič, če opazite, če zaženete naslednji skript, programa ne morete ubiti. Na Ctrl-C se ne bo odzval. Če zaženete ta ukaz, preprosto zaprite okno terminala in odprite novo.
#! / usr / bin / env rubin
zahtevajo 'stojalo'
razred HelloWorld
kliči def (env)
vrnitev [200, {}, ["Pozdravljeni svet!"]]
konec
konec
Stojalo:: Rokovanje:: WEBrick.run (
HelloWorld.new,
: Port => 9000
)
Rackup
Čeprav je to zelo enostavno storiti, Rack običajno ne uporablja. Stojalo se običajno uporablja z orodjem, imenovanim regal. Rackup naredi bolj ali manj tisto, kar je bilo v spodnjem delu zgornje kode, vendar na bolj uporaben način. Rackup se izvaja iz ukazne vrstice in mu je dodano .ru "Rackup datoteka." To je samo scenarij Ruby, ki med drugim napaja aplikacijo na Rackup.
Zelo osnovna rackup datoteka za zgoraj bi izgledala nekako takole.
razred HelloWorld
kliči def (env)
vrniti [
200,
{'Content-Type' => 'text / html'},
["Pozdravljen, svet!"]
]
konec
konec
zaženite HelloWorld.new
Najprej smo morali narediti eno drobno spremembo Pozdravljen, svet razred. Rackup izvaja aplikacijo za vmesno programsko opremo, imenovano Stojalo:: Lint da sanitarno preverja odzive. Vsi HTTP odgovori bi morali imeti Vrsta vsebine glavo, tako da je bilo dodano. Nato zadnja vrstica samo ustvari primerek aplikacije in jo posreduje v teči metoda. V idealnem primeru vaše vloge ne bi smeli biti v celoti zapisani v datoteko Rackup, ta datoteka bi morala zahtevati vašo prijavo v njej in na ta način ustvariti primerek. Datoteka Rackup je samo "lepilo", nobene prave kode aplikacije ne bi smelo biti.
Če zaženete ukaz rackup helloworld.ru, na vratih 9292 zažene strežnik. To je privzeta vrata Rackup.
Rackup ima še nekaj uporabnih funkcij. Najprej je mogoče stvari, kot je pristanišče, spremeniti v ukazni vrstici ali v posebni vrstici v skriptu. V ukazni vrstici preprosto vnesite a -p vrata parameter. Na primer: rackup -p 1337 helloworld.ru. Iz samega skripta, če se začne prva vrstica z #\, potem se razčleni tako kot ukazna vrstica. Tako lahko tukaj določite tudi možnosti. Če želite zagnati na pristanišču 1337, bi lahko prebrala prvo vrstico datoteke Rackup # \ -p 1337.