Ruby on Rails -sovellusvirta

Kun kirjoitat omia ohjelmia alusta loppuun, se on helppo nähdä virtauksen hallinta. Ohjelma alkaa täältä, siellä on silmukka, menetelmäsoitot ovat täällä, kaikki näkyy. Mutta Rails-sovelluksessa asiat eivät ole niin yksinkertaisia. Minkä tahansa kehyksen avulla voit luopua "virtauksen" hallitsemisesta nopeamman tai yksinkertaisemman tavan suorittaa monimutkaisia ​​tehtäviä. Ruby on Rails -tapahtumassa virtauksen ohjausta käsitellään kulissien takana, ja kaikki mitä jäljellä on on (enemmän tai vähemmän) mallisto, näkymä ja ohjaimet.

Kaikkien verkkosovellusten ytimessä on HTTP. HTTP on verkkoprotokolla, jota selaimesi käyttää puhumaan web-palvelimen kanssa. Tästä kohdasta tulevat sellaiset termit kuin "pyyntö", "GET" ja "POST", ne ovat tämän protokollan perussana. Koska Rails on kuitenkin abstrakti tästä, emme viettää paljon aikaa puhumme siitä.

Kun avaat verkkosivun, napsauta linkkiä tai lähetä lomake selaimessa, selain muodostaa yhteyden web-palvelimeen TCP / IP: n kautta. Sitten selain lähettää palvelimelle "pyynnön", ajattele sitä kuten postin muodossa, että selain täyttää tietyn sivun tiedot. Viime kädessä palvelin lähettää selaimelle "vastauksen". Ruby on Rails ei kuitenkaan ole web-palvelin, Web-palvelin voi olla mikä tahansa Webrickistä (mitä tapahtuu yleensä, kun käynnistät Rails-palvelimen

instagram viewer
komentorivi) Apache HTTPD: hen (web-palvelin, joka käyttää suurimman osan webistä). Web-palvelin on vain avustaja, se ottaa pyynnön ja luovuttaa sen Rails-sovellukseesi, joka generoi vastauksen ja läpäisee, on takaisin palvelimelle, joka puolestaan ​​lähettää sen takaisin asiakas. Joten virtaus toistaiseksi on:

Yksi ensimmäisistä asioista, jotka Rails-sovellus tekee pyynnöllä, on lähettää se reitittimen kautta. Jokaisella pyynnöllä on URL, tämä näkyy selaimen osoiterivillä. Reititin määrittää, mitä kyseiselle URL-osoitteelle on tehtävä, jos URL on järkevä ja jos URL sisältää mitään parametreja. Reititin on määritetty config / routes.rb.

Ensinnäkin, tiedä, että reitittimen perimmäinen tavoite on yhdistää URL-osoite ohjaimeen ja toimintoon (lisätietoja näistä myöhemmin). Ja koska suurin osa Rails-sovelluksista on RESTful ja RESTful-sovelluksissa asiat esitetään resurssien avulla, näet rivit kuten resurssit: viestit tyypillisissä Rails-sovelluksissa. Tämä vastaa URL-osoitteita kuten /posts/7/edit Viestit-ohjaimen avulla muokata toiminto postissa, jonka tunnus on 7. Reititin vain päättää, mihin pyynnöt menevät. Joten [Rails] -lohkoamme voidaan laajentaa vähän.

Nyt kun reititin on päättänyt, mille ohjaimelle lähetetään pyyntö ja mihin ohjaimeen tämä toiminto suoritetaan, se lähettää sen. Ohjain on ryhmä liittyviä toimia, jotka kaikki on niputettu luokkaan. Esimerkiksi blogissa kaikki blogin viestien tarkastelemiseen, luomiseen, päivittämiseen ja poistamiseen tarkoitettu koodi on niputettu yhteen Postitse-nimisen ohjaimen avulla. Toimet ovat vain normaalia menetelmät tämän luokan. Ohjaimet sijaitsevat app / ohjaimet.

Joten sanotaan, että selain lähetti pyynnön /posts/42. Reititin päättää, että tämä viittaa Lähettää ohjain, näytä menetelmä ja näytettävän viestin tunnus on 42, joten se kutsuu näytä menetelmä tällä parametrilla. näytä menetelmä ei ole vastuussa mallin käytöstä tietojen noutamisessa ja näkymän käytöstä tulosteen luomiseen. Joten laajennettu [Rails] -lohkomme on nyt:

Malli on sekä helpoin ymmärtää että vaikeimmin toteutettavissa. Malli vastaa vuorovaikutuksesta tietokannan kanssa. Yksinkertaisin tapa selittää se on malli on yksinkertainen menetelmäkutsu, joka palauttaa tavalliset Ruby-objektit, jotka käsittelevät kaikkia vuorovaikutuksia (lukee ja kirjoittavat) tietokannasta. Joten seuraamalla blogin esimerkkiä, sovellusliittymä, jota ohjain käyttää tietojen noutamiseen mallin avulla, näyttää noin Post.find (params [: id]). parametrien mitä reititin jäsentää URL-osoitteesta, Post on malli. Tämä tekee SQL-kyselyitä tai tekee kaiken tarvittavan blogiviestin noutamiseksi. Mallit sijaitsevat app / malleja.

On tärkeää huomata, että kaikkien toimien ei tarvitse käyttää mallia. Vuorovaikutus mallin kanssa vaaditaan vain, kun tietoja on ladattava tietokannasta tai tallennettava tietokantaan. Sellaisena laitamme kysymysmerkin sen jälkeen pieneen vuokaavioon.

Viimeinkin on aika alkaa tuottaa HTML-koodia. Ohjain itse ei käsittele HTML: ää, eikä malli käsittele sitä. MVC-kehyksen käyttö on kaiken lokerointi. Tietokannan toiminnot pysyvät tilassa, HTML-sukupolvi pysyy näkymässä, ja ohjain (kutsutaan reitittimeltä) kutsuu heidät molemmat.

HTML luodaan yleensä sulautetulla Ruby-sovelluksella. Jos tunnet PHP: n, toisin sanoen HTML-tiedoston, johon on upotettu PHP-koodi, upotettu Ruby on hyvin tuttu. Nämä näkymät sijaitsevat app / näkymät, ja ohjain kutsuu yhtä heistä luomaan tulosteen ja lähettämään sen takaisin verkkopalvelimelle. Kaikki mallin avulla ohjaimen hakemat tiedot tallennetaan yleensä esiintymismuuttuja joka Ruby-taikuuden ansiosta on saatavana ilmentymän muuttujina näkymän sisällä. Sulautetun Rubyn ei tarvitse luoda HTML-muotoa, se voi tuottaa minkä tahansa tyyppistä tekstiä. Näet tämän, kun tuot XML-tiedostoja RSS, JSON jne.

Tämä lähtö lähetetään takaisin verkkopalvelimelle, joka lähettää sen takaisin selaimeen, joka suorittaa prosessin loppuun.