Rakstot savas programmas no sākuma līdz beigām, to ir viegli redzēt plūsmas kontrole. Programma sākas šeit, tur ir cilpa, metožu zvani ir klāt, tas viss ir redzams. Bet Rails lietojumprogrammā lietas nav tik vienkāršas. Izmantojot jebkāda veida sistēmu, jūs atsakāties no tādu lietu kā “plūsmas” kontroles, par labu ātrākam vai vienkāršākam veidam sarežģītu uzdevumu veikšanai. Ruby on Rails gadījumā plūsmas kontrole tiek apstrādāta aiz ainas, un viss, kas jums paliek, ir (vairāk vai mazāk) modeļu, skata un kontrolieru kolekcija.
Jebkuras tīmekļa lietojumprogrammas pamatā ir HTTP. HTTP ir tīkla protokols, kuru jūsu tīmekļa pārlūks izmanto, lai sarunātos ar tīmekļa serveri. Šeit nāk tādi termini kā “pieprasījums”, “GET” un “POST”, tie ir šī protokola pamata vārdu krājums. Tā kā Rails ir tā abstrakcija, mēs tam veltīsim daudz laika.
Atverot Web lapu, noklikšķiniet uz saites vai iesniedziet veidlapu tīmekļa pārlūkprogrammā, pārlūks izveidos savienojumu ar tīmekļa serveri, izmantojot TCP / IP. Pēc tam pārlūkprogramma nosūta serverim “pieprasījumu”, domājiet par to kā par e-pastu, ko pārlūks aizpilda, pieprasot informāciju par noteiktu lapu. Galu galā serveris nosūta tīmekļa pārlūkprogrammai “atbildi”. Lai arī Ruby on Rails nav tīmekļa serveris, Web serveris var būt jebkas no Webrick (tas notiek parasti, startējot Rails serveri no
komandrinda) uz Apache HTTPD (tīmekļa serveris, kas darbina lielāko daļu tīmekļa). Web serveris ir tikai palīglīdzeklis. Tas ņem pieprasījumu un nodod to jūsu Rails lietojumprogrammai, kas ģenerē atbildi un nodod to atpakaļ uz serveri, kas savukārt to nosūta atpakaļ serverim klients. Tātad līdzšinējā plūsma ir:Viena no pirmajām lietām, ko lieto Rails lietojumprogramma, ir to nosūtīt caur maršrutētāju. Katram pieprasījumam ir URL, tas ir tas, kas parādās tīmekļa pārlūka adreses joslā. Maršrutētājs ir tas, kas nosaka, kas jādara ar šo URL, ja URL ir jēga un ja URL satur kādus parametrus. Maršrutētājs ir konfigurēts konfigur / maršruti.rb.
Pirmkārt, zināt, ka maršrutētāja galvenais mērķis ir saskaņot vietrādi URL ar kontrolieri un darbību (vairāk par tām vēlāk). Tā kā vairums Rails lietojumprogrammu ir RESTful un RESTful lietojumprogrammās lietas tiek attēlotas, izmantojot resursus, jūs redzēsit tādas rindiņas kā resursi: ziņas tipiskās Rails lietojumprogrammās. Tas atbilst vietrāžiem URL, piemēram /posts/7/edit ar Posts kontrolieri rediģēt darbība ar pastu ar ID 7. Maršrutētājs tikai izlemj, kur tiek novirzīti pieprasījumi. Tātad mūsu [Rails] bloku var mazliet paplašināt.
Tagad, kad maršrutētājs ir izlēmis, kuram kontrolierim nosūtīt pieprasījumu un kurai darbībai ar šo kontrolieri tas to nosūta. Kontrolieris ir saistītu darbību grupa, kas visi ir apvienoti klasē. Piemēram, emuārā viss kods, kas paredzēts emuāru ziņu apskatīšanai, izveidošanai, atjaunināšanai un izdzēšanai, ir sagrupēts kontrollerī ar nosaukumu “Post”. Darbības ir tikai normālas metodes šīs klases. Kontrolieri atrodas lietotne / kontrolieri.
Tātad, pieņemsim, ka tīmekļa pārlūks nosūtīja pieprasījumu /posts/42. Maršrutētājs nolemj, ka tas attiecas uz Izlikt kontrolieris, šovs metode un parādāmās ziņas ID ir 42, tāpēc to sauc par šovs metode ar šo parametru. šovs metode nav atbildīga par modeļa izmantošanu datu iegūšanai un skata izmantošanu izvades izveidošanai. Tātad mūsu paplašinātais [Rails] bloks tagad ir:
Modelis ir gan visvienkāršāk izprotams, gan arī visgrūtāk īstenojamais. Modelis ir atbildīgs par mijiedarbību ar datu bāzi. Vienkāršākais veids, kā to izskaidrot, ir vienkāršs metožu izsaukumu komplekts, kas no datu bāzes atgriež vienkāršus Ruby objektus, kas apstrādā visu mijiedarbību (lasa un raksta). Tātad, sekojot emuāra piemēram, API, kuru kontrolieris izmantos, lai iegūtu datus, izmantojot modeli, izskatīsies kaut kas līdzīgs Post.find (params [: id]). params ir tas, ko maršrutētājs analizē no URL, modelis ir Post. Tas rada SQL vaicājumus vai dara visu, kas nepieciešams emuāra ziņas izguvei. Modeļi atrodas lietotne / modeļi.
Ir svarīgi atzīmēt, ka ne visām darbībām ir jāizmanto modelis. Mijiedarbība ar modeli ir nepieciešama tikai tad, ja dati ir jāielādē no datu bāzes vai jāsaglabā datu bāzē. Kā tādus mēs savā mazajā blokshēmā ievietosim jautājuma zīmi.
Visbeidzot, ir pienācis laiks sākt ģenerēt HTML. HTML neveic pats kontrolieris, ne arī modelis. MVC karkasa izmantošanas jēga ir visu nodalīt. Datu bāzes darbības paliek režīmā, HTML paaudze paliek skatā, un kontrolieris (ko sauc maršrutētājs) izsauc tos abus.
Parasti HTML tiek ģenerēts, izmantojot iegultu Ruby. Ja esat pazīstams ar PHP, tas ir, HTML failu ar tajā iestrādātu PHP kodu, tad iegultais Rubīns būs ļoti pazīstams. Šie skati atrodas lietotne / skati, un kontrolieris piezvanīs vienam no viņiem, lai ģenerētu izvadi un nosūtītu to atpakaļ uz tīmekļa serveri. Visi dati, ko izlaidis kontrolieris, izmantojot modeli, parasti tiek glabāti instances mainīgais kas, pateicoties zināmai Rubīna maģijai, būs pieejami kā instanču mainīgie no skata. Arī iegultajam Rubīnam nav jāģenerē HTML, tas var radīt jebkura veida tekstu. To redzēsit, ģenerējot XML RSS, JSON utt.
Šī izvade tiek nosūtīta atpakaļ uz tīmekļa serveri, kas to nosūta atpakaļ uz tīmekļa pārlūkprogrammu, kas pabeidz procesu.