Potek aplikacije Ruby on Rails

Ženska, ki dela za računalnikom in uporablja programsko opremo za analizo kvalitativnih podatkov.

mihailomilovanovic/Getty Images





01 od 07

Potek aplikacije Rails

Ko pišete lastne programe od začetka do konca, je to enostavno videti nadzor toka . Program se začne tukaj, tam je zanka, klici metod so tukaj, vse je vidno. Toda v aplikaciji Rails stvari niso tako preproste. S kakršnim koli ogrodjem se odrečete nadzoru nad stvarmi, kot je 'tok', v korist hitrejšega ali enostavnejšega načina opravljanja kompleksnih nalog. V primeru Ruby on Rails se nadzor poteka izvaja v zakulisju in vse, kar vam ostane, je (bolj ali manj) zbirka modelov, pogledov in krmilnikov.

02 od 07

HTTP

Jedro vsake spletne aplikacije je HTTP. HTTP je omrežni protokol, ki ga vaš spletni brskalnik uporablja za komunikacijo s spletnim strežnikom. Od tod izvirajo izrazi, kot so 'zahteva', 'GET' in 'POST', ki so osnovni besednjak tega protokola. Ker pa je Rails abstrakcija tega, o tem ne bomo porabili veliko časa.



Ko odprete spletno stran, kliknete povezavo ali oddate obrazec v spletnem brskalniku, se brskalnik poveže s spletnim strežnikom prek TCP/IP. Brskalnik nato strežniku pošlje 'zahtevo', predstavljajte si to kot obrazec za pošiljanje po pošti, ki ga brskalnik izpolni in zahteva podatke na določeni strani. Strežnik nazadnje pošlje spletnemu brskalniku 'odgovor'. Vendar Ruby on Rails ni spletni strežnik, spletni strežnik je lahko karkoli iz Webricka (kar se običajno zgodi, ko strežnik Rails zaženete iz ukazna vrstica ) v Apache HTTPD (spletni strežnik, ki poganja večino spleta). Spletni strežnik je le posrednik, sprejme zahtevo in jo preda vaši aplikaciji Rails, ki generira odgovor in ga posreduje nazaj strežniku, ta pa ga pošlje nazaj odjemalcu. Dosedanji tok je torej:

Odjemalec -> Strežnik -> [Rails] -> Strežnik -> Odjemalec

Toda 'Rails' je tisto, kar nas res zanima, poglejmo globlje.



03 od 07

Usmerjevalnik

Ena od prvih stvari, ki jih aplikacija Rails naredi z zahtevo, je, da jo pošlje prek usmerjevalnika. Vsaka zahteva ima URL, ki se prikaže v naslovni vrstici spletnega brskalnika. Usmerjevalnik je tisti, ki določa, kaj je treba storiti s tem URL-jem, ali je URL smiseln in ali URL vsebuje kakršne koli parametre. Usmerjevalnik je konfiguriran v config/routes.rb .

Najprej vedite, da je končni cilj usmerjevalnika uskladiti URL s krmilnikom in dejanjem (več o tem pozneje). In ker je večina aplikacij Rails RESTful in so stvari v aplikacijah RESTful predstavljene z uporabo virov, boste videli vrstice, kot so viri: objave v tipičnih aplikacijah Rails. To se ujema z URL-ji, kot je /posts/7/uredi s kontrolorjem Pošte je Uredi dejanje na Post z ID-jem 7. Usmerjevalnik se samo odloči, kam gredo zahteve. Naš blok [Rails] je torej mogoče nekoliko razširiti.

Usmerjevalnik -> [Tračnice]

04 od 07

Krmilnik

Zdaj, ko se je usmerjevalnik odločil, kateremu krmilniku naj pošlje zahtevo in kateremu dejanju na tem krmilniku, jo pošlje naprej. Krmilnik je skupina povezanih dejanj, ki so združena v razred. V spletnem dnevniku je na primer vsa koda za ogled, ustvarjanje, posodabljanje in brisanje objav v spletnem dnevniku združena v krmilniku, imenovanem »Objava«. Dejanja so povsem običajna metode tega razreda. Krmilniki se nahajajo v aplikacija/krmilniki .

Recimo, da je spletni brskalnik poslal zahtevo za /objav/42 . Usmerjevalnik se odloči, da se to nanaša na Objavi krmilnik, pokazati metoda in ID objave za prikaz je 42 , zato kliče pokazati metoda s tem parametrom. The pokazati metoda ni odgovorna za uporabo modela za pridobivanje podatkov in uporabo pogleda za ustvarjanje izhoda. Tako je naš razširjen blok [Rails] zdaj:



Router -> Controller#action
05 od 07

Model

Model je hkrati najenostavnejši za razumevanje in najtežje implementiran. Model je odgovoren za interakcijo z bazo podatkov. Najpreprostejši način za razlago je, da je model preprost nabor klicev metod, ki vrnejo navadne predmete Ruby, ki obravnavajo vse interakcije (branje in pisanje) iz baze podatkov. Če sledimo primeru bloga, bo API, ki ga bo krmilnik uporabil za pridobivanje podatkov z uporabo modela, videti nekako tako Post.find(params[:id]) . The params je tisto, kar je usmerjevalnik razčlenil iz URL-ja, Post je model. To naredi poizvedbe SQL ali naredi vse, kar je potrebno za pridobitev objave v spletnem dnevniku. Modeli se nahajajo v aplikacija/modeli .

Pomembno je omeniti, da za vsa dejanja ni treba uporabiti modela. Interakcija z modelom je potrebna le, ko je treba podatke naložiti iz baze podatkov ali shraniti v bazo podatkov. Zato bomo v našem majhnem diagramu poteka za njim postavili vprašaj.



Router -> Controller#action -> Model?
06 od 07

Pogled

Končno je čas, da začnete ustvarjati nekaj HTML-ja. HTML-ja ne obravnava krmilnik sam, niti ga ne obravnava model. Bistvo uporabe ogrodja MVC je razdeliti vse na razdelke. Operacije baze podatkov ostanejo v načinu, generiranje HTML ostane v pogledu, krmilnik (ki ga kliče usmerjevalnik) pa pokliče oboje.

HTML se običajno ustvari z uporabo vdelanega Rubyja. Če poznate PHP, to je datoteko HTML z vdelano kodo PHP, vam bo vdelan Ruby zelo znan. Ti pogledi se nahajajo v aplikacija/ogledi , krmilnik pa bo poklical enega od njih, da ustvari izhod in ga pošlje nazaj na spletni strežnik. Vsi podatki, ki jih pridobi krmilnik z uporabo modela, bodo na splošno shranjeni v spremenljivka primerka ki bodo po zaslugi nekaj čarovnije Ruby na voljo kot spremenljivke primerka znotraj pogleda. Prav tako vdelanemu Rubyju ni treba generirati HTML-ja, lahko generira katero koli vrsto besedila. To boste videli pri ustvarjanju XML za RSS, JSON itd.



Ta rezultat se pošlje nazaj spletnemu strežniku, ki ga pošlje nazaj spletnemu brskalniku, ki zaključi postopek.

07 od 07

Popolna slika

In to je to, tukaj je celotno življenje zahteve spletni aplikaciji Ruby on Rails.



  1. Spletni brskalnik - Brskalnik naredi zahtevo, običajno v imenu uporabnika, ko klikne povezavo.
  2. Spletni strežnik - spletni strežnik sprejme zahtevo in jo pošlje aplikaciji Rails.
  3. Usmerjevalnik – usmerjevalnik, prvi del aplikacije Rails, ki vidi zahtevo, razčleni zahtevo in določi, kateri par krmilnik/dejanje naj pokliče.
  4. Krmilnik - Pokliče se krmilnik. Naloga krmilnika je pridobiti podatke z uporabo modela in jih poslati v pogled.
  5. Model – če je treba pridobiti kakršne koli podatke, se model uporabi za pridobivanje podatkov iz baze podatkov.
  6. Pogled – podatki se pošljejo v pogled, kjer se ustvari izpis HTML.
  7. spletni strežnik - Ustvarjeni HTML se pošlje nazaj na strežnik, Rails je zdaj končal z zahtevo.
  8. Spletni brskalnik – strežnik pošlje podatke nazaj spletnemu brskalniku in prikažejo se rezultati.