Tijek primjene Ruby on Rails

click fraud protection

Kada pišete vlastite programe od početka do kraja, lako je vidjeti kontrola protoka. Program započinje ovdje, tamo je petlja, pozivi metoda su ovdje, sve je vidljivo. Ali u aplikaciji Rails stvari nisu tako jednostavne. Sa bilo kojom vrstom okvira, odričete se kontrole takvih stvari kao što su "protok" u korist bržeg ili jednostavnijeg načina obavljanja složenih zadataka. U slučaju Ruby on Rails, kontrola protoka upravlja se iza kulisa, a sve što vam ostaje je (manje ili više) kolekcija modela, prikaza i regulatora.

U jezgri bilo koje web aplikacije nalazi se HTTP. HTTP je mrežni protokol koji vaš web preglednik koristi za razgovor s web poslužiteljem. Ovo je mjesto odakle dolaze pojmovi poput "zahtjev", "GET" i "POST", oni su osnovni vokabular ovog protokola. Međutim, budući da je Rails apstrakcija ovoga, nećemo trošiti puno vremena na razgovor o tome.

Kada otvorite web stranicu, kliknite na vezu ili pošaljete obrazac u web pregledniku, preglednik će se povezati s web poslužiteljem putem TCP / IP. Zatim preglednik šalje poslužitelju "zahtjev", razmišljajte o njemu kao o obrascu za prijavu koji preglednik ispunjava tražeći informacije na određenoj stranici. Poslužitelj u konačnici šalje web pregledniku "odgovor". Ruby on Rails ipak nije web poslužitelj, web-poslužitelj može biti bilo što od Webricka (što se obično događa kada pokrenete Rails server

instagram viewer
naredbeni redak) na Apache HTTPD (web poslužitelj koji pokreće veći dio weba). Web poslužitelj je samo facilitator, uzima zahtjev i predaje ga svojoj aplikaciji Rails, koji generira odgovor i prosljeđuje se ponovno na poslužitelj, koji ga zauzvrat vraća na klijent. Do sada je tok:

Jedna od prvih stvari koju aplikacija Rails napravi sa zahtjevom je da je pošalje preko usmjerivača. Svaki zahtjev ima URL, to se prikazuje u adresnoj traci web preglednika. Ruter je ono što određuje što treba učiniti s tim URL-om, ako URL ima smisla i ako URL sadrži bilo koje parametre. Usmjerivač je konfiguriran u config / routes.rb.

Prvo, znajte da je krajnji cilj usmjerivača uskladiti URL s kontrolerom i radnjom (više o tome kasnije). Budući da je većina aplikacija Rails RESTful, a stvari u RESTful aplikacijama predstavljene su pomoću resursa, vidjet ćete redove poput resursi: postovi u tipičnim aplikacijama Rails. To se podudara s URL-ovima poput /posts/7/edit s kontrolorom pošte, Uredi radnja na Pošti s ID-om od 7. Ruter samo odlučuje kamo zahtjevi idu. Dakle, naš [Rails] blok može se malo proširiti.

Sada kada je usmjerivač odlučio kojemu će kontroler poslati zahtjev i u koju će radnju na tom kontroleru poslati. Kontroler je skupina povezanih akcija koja je sve sjedinjena u klasi. Na primjer, na blogu se sav kôd za pregled, stvaranje, ažuriranje i brisanje postova na blogu snosi zajedno u kontroler pod nazivom "Post". Akcije su sasvim normalne metode ove klase. Kontroleri se nalaze u aplikacije / regulatori.

Recimo da je web preglednik poslao zahtjev za /posts/42. Ruter odluči da se ovo odnosi na pošta kontroler, the pokazati metoda i ID posta koji se prikazuje 42, tako se zove pokazati metoda s ovim parametrom. pokazati metoda nije odgovorna za korištenje modela za dohvaćanje podataka i korištenje prikaza za stvaranje rezultata. Dakle, sada je naš prošireni blok [Rails]:

Model je i najjednostavniji za razumijevanje i najteži za implementaciju. Model je odgovoran za interakciju s bazom podataka. Najjednostavniji način da se objasni da je model je jednostavan skup poziva metoda koji vraćaju obične Ruby objekte koji obrađuju sve interakcije (čita i piše) iz baze podataka. Dakle, slijedeći primjer bloga, API koji će kontroler koristiti za dohvaćanje podataka pomoću modela izgledat će nekako Post.find (params [: id]). parametri je ono što je usmjerivač raščlanio iz URL-a, Post je model. To čini SQL upite ili čini sve što je potrebno za dohvaćanje posta na blogu. Modeli se nalaze u app / modeli.

Važno je napomenuti da se ne moraju u svim radnjama koristiti model. Interakcija s modelom potrebna je samo kad je potrebno učitati podatke iz baze podataka ili ih spremiti u bazu podataka. Kao takav, u naš mali dijagram toka postavićemo upitnik nakon njega.

Napokon je došlo vrijeme za početak generiranja nekih HTML-ova. HTML ne upravlja sam kontroler, niti ga rukuje model. Smisao korištenja MVC okvira je podijeliti sve. Operacije baze podataka ostaju u načinu rada, generacija HTML ostaje u prikazu, a kontroler (koji ga zove usmjerivač) zove ih oboje.

HTML se obično generira pomoću ugrađene Ruby. Ako ste upoznati s PHP-om, odnosno HTML datotekom s PHP kodom koji je ugrađen u nju, tada će vam Ruby biti vrlo poznat. Ti su pogledi smješteni u app / pogled, a kontroler će pozvati jednog od njih da generira izlaz i vratiti ga na web poslužitelj. Svi podaci koje je kontroler preuzeo pomoću modela u pravilu se pohranjuju u varijabla instance koji će zahvaljujući nekoj Ruby čaroliji biti dostupni kao primjerice varijabli iz prikaza. Također, Ruby s ugrađenim Rubyjem ne treba generirati HTML, može generirati bilo koju vrstu teksta. To ćete vidjeti kada generirate XML za RSS, JSON itd.

Ovaj izlaz vraća se web poslužitelju, koji ga vraća nazad u web preglednik, što dovršava postupak.

instagram story viewer