A Rack alkalmazás használata Ruby-ban

click fraud protection

Ban,-ben előző cikk, megtudta, mi a Rack. Itt az ideje, hogy elkezdje a Rack használatát, és néhány oldalt kiszolgáljon.

Helló Világ

Először kezdjük egy „Helló Világ" Alkalmazás. Ez az alkalmazás, függetlenül attól, hogy milyen típusú kérést kapott, visszatér 200-es állapotkóddal (amely HTTP-beszéd az „OK” -hoz) és a karakterlánccal "Helló Világ" mint a test.

A következő kód megvizsgálása előtt mérlegelje újra azokat a követelményeket, amelyeknek minden Rack alkalmazásnak meg kell felelnie.

A Rack alkalmazás bármely olyan Ruby objektum, amely válaszol a hívás módszerére, egyetlen hash paramétert vesz és egy tömböt ad vissza, amely tartalmazza a válasz állapotkódját, a HTTP válaszfejléceket és a választestet tömbként húrok.
osztály HelloWorld
def hívás (env)
visszatérés [200, {}, ["Helló világ!"]]
vég
vég

Mint látható, egy típusú objektum Helló Világ teljesíti ezeket a követelményeket. Nagyon minimálisan, és nem is rendkívül hasznosan, de teljesíti az összes követelményt.

WEBrick

Ez nagyon egyszerű, most csatlakoztassuk a WEBrick-hez (a mellékelt HTTP szerverhez)

instagram viewer
Rubin). Ehhez a Rack:: Handler:: WEBrick.run módszer, adja át egy példányát Helló Világ és a futó portot. Most egy WEBrick szerver fog futni, és a Rack kéréseket továbbít a HTTP szerver és az alkalmazás között.

Megjegyzés: ez nem ideális módja annak, hogy a Rack segítségével elindítsuk a dolgokat. Csak itt látható, hogy valami elinduljon, mielőtt a Rack egy másik elemére, az úgynevezett "Rackup" -ra merülne. A Rack:: Handler ilyen módon történő használata néhány problémával jár. Először is, nem túl konfigurálható. Minden keményen kódolva van a forgatókönyvbe. Másodszor, amint észreveszi, hogy a következő szkript futtatásakor a program nem ölhető meg. A Ctrl-C-re nem válaszol. Ha ezt a parancsot futtatja, egyszerűen zárja be a terminál ablakot, és nyisson meg egy újat.

#! / usr / bin / env ruby
igényelnek „állványt”
osztály HelloWorld
def hívás (env)
visszatérés [200, {}, ["Helló világ!"]]
vég
vég
Rack:: Kezelő:: WEBrick.run (
HelloWorld.new,
: Port => 9000
)

Rackup

Noha ezt meglehetősen könnyű megtenni, nem az, hogy a Rack-et általában hogyan használják. A rack-et általában egy úgynevezett szerszámmal használják rackup. A rackup többé-kevésbé csinálja azt, ami a fenti kód alsó részében volt, de használhatóbb módon. Az összeállítást a parancssorból kell futtatni, és kap egy a .ru “Összeállítási fájl.” Ez csak egy Ruby szkript, amely egyebek mellett az alkalmazást továbbítja a Rackup számára.

A fentiek nagyon alapvető Rackup fájlja így néz ki.

osztály HelloWorld
def hívás (env)
Visszatérés [
200,
{'Content-Type' => 'text / html'},
["Helló Világ!"]
]
vég
vég
futtassa a HelloWorld.new alkalmazást

Először is egy apró változtatást kellett végrehajtanunk a Helló Világ osztály. A Rackup egy köztes szoftvert alkalmaz, az úgynevezett Rack:: Lint ez a józanság ellenőrzi a válaszokat. Minden HTTP válasznak a kell lennie Tartalom típus fejléc, így hozzáadódott. Ezután az utolsó sor létrehozza az alkalmazás példányát, és továbbítja azt az fuss eljárás. Ideális esetben az alkalmazását nem szabad teljes egészében a Rackup fájlba írni, ennek a fájlnak az alkalmazásához be kell írnia, és így kell létrehoznia egy példányát. A Rackup fájl csak „ragasztó”, valódi alkalmazáskódnak nem kell lennie.

Ha futtatja a parancsot rackup helloworld.ru, kiszolgálót indít a 9292-es porton. Ez az alapértelmezett Rackup port.

Az összeállítás néhány további hasznos funkcióval rendelkezik. Először is, például a port megváltoztatható a parancssorban vagy a parancsfájl speciális sorában. A parancssorban csak adja át a -p port paraméter. Például: rackup -p 1337 helloworld.ru. Maga a szkript, ha az első sor kezdődik #\, akkor ugyanúgy elemzi, mint a parancssort. Tehát itt is meghatározhatja a lehetőségeket. Ha az 1337-es porton szeretne futni, akkor a Rackup fájl első sora elolvasható # \ -p 1337.

instagram story viewer