Priebeh aplikácie Ruby on Rails

Žena pracujúca pri počítači pomocou softvéru na analýzu kvalitatívnych údajov.

mihailomilovanovic/Getty Images





01 z 07

Priebeh aplikácie koľajníc

Keď píšete svoje vlastné programy od začiatku do konca, je to ľahké vidieť riadenie toku . Program začína tu, je tam slučka, sú tu volania metód, všetko je viditeľné. Ale v aplikácii Rails veci nie sú také jednoduché. S rámcom akéhokoľvek druhu sa vzdáte kontroly nad takými vecami, ako je „tok“ v prospech rýchlejšieho alebo jednoduchšieho spôsobu vykonávania zložitých úloh. V prípade Ruby on Rails je ovládanie toku všetko riešené v zákulisí a všetko, čo vám zostane, je (viac-menej) zbierka modelov, pohľadu a ovládačov.

02 z 07

HTTP

Jadrom každej webovej aplikácie je HTTP. HTTP je sieťový protokol, ktorý váš webový prehliadač používa na komunikáciu s webovým serverom. Odtiaľ pochádzajú pojmy ako „požiadavka“, „ZÍSKAŤ“ a „POST“, ktoré tvoria základnú slovnú zásobu tohto protokolu. Keďže sú však Rails abstrakciou tohto, nebudeme o tom tráviť veľa času rozprávaním.



Keď otvoríte webovú stránku, kliknete na odkaz alebo odošlete formulár vo webovom prehliadači, prehliadač sa pripojí k webovému serveru cez TCP/IP. Prehliadač potom odošle serveru „požiadavku“, predstavte si to ako e-mailový formulár, ktorý prehliadač vyplní a požiada o informácie na určitej stránke. Server nakoniec odošle webovému prehliadaču „odpoveď“. Ruby on Rails však nie je webový server, webovým serverom môže byť čokoľvek od Webrick (čo sa zvyčajne stane, keď spustíte server Rails z príkazový riadok ) na Apache HTTPD (webový server, ktorý poháňa väčšinu webu). Webový server je len sprostredkovateľ, prevezme požiadavku a odovzdá ju vašej aplikácii Rails, ktorá vygeneruje odpoveď a odošle ju späť na server, ktorý ju následne pošle späť klientovi. Takže doterajší tok je:

Klient -> Server -> [Rails] -> Server -> Klient

Ale 'Rails' je to, čo nás skutočne zaujíma, poďme tam kopať hlbšie.



03 z 07

Smerovač

Jednou z prvých vecí, ktoré aplikácia Rails urobí so žiadosťou, je jej odoslanie cez smerovač. Každá požiadavka má adresu URL, ktorá sa zobrazuje v paneli s adresou webového prehliadača. Smerovač určuje, čo sa má urobiť s touto adresou URL, či adresa URL dáva zmysel a či adresa URL obsahuje nejaké parametre. Router je nakonfigurovaný v config/routes.rb .

Po prvé, vedzte, že konečným cieľom smerovača je priradiť adresu URL k ovládaču a akcii (viac o nich neskôr). A keďže väčšina aplikácií Rails je RESTful a veci v aplikáciách RESTful sú reprezentované pomocou zdrojov, uvidíte riadky ako zdroje :príspevky v typických aplikáciách Rails. Toto sa zhoduje s adresami URL ako /posts/7/edit s ovládačom príspevkov, upraviť akcia na príspevok s ID 7. Smerovač len rozhoduje o tom, kam budú žiadosti smerovať. Takže náš blok [Rails] môže byť trochu rozšírený.

Router -> [Koľajnice]

04 z 07

Ovládač

Teraz, keď sa router rozhodol, ktorému radiču pošle požiadavku a na ktorú akciu na tomto radiči, pošle ju ďalej. Ovládač je skupina súvisiacich akcií, ktoré sú všetky spojené v triede. Napríklad v blogu je všetok kód na prezeranie, vytváranie, aktualizáciu a odstraňovanie blogových príspevkov združený v ovládači s názvom „Post“. Akcie sú normálne metódy tejto triedy. Ovládače sú umiestnené v aplikácia/ovládače .

Povedzme teda, že webový prehliadač odoslal požiadavku na /príspevky/42 . Smerovač rozhodne, že sa to týka Príspevok ovládač, šou a ID príspevku, ktorý sa má zobraziť, je 42 , tak to nazýva šou metóda s týmto parametrom. The šou metóda nezodpovedá za použitie modelu na získanie údajov a použitie zobrazenia na vytvorenie výstupu. Takže náš rozšírený blok [Rails] je teraz:



Router -> Controller#action
05 z 07

Model

Model je najjednoduchší na pochopenie a zároveň najťažšie na implementáciu. Model je zodpovedný za interakciu s databázou. Najjednoduchším spôsobom, ako to vysvetliť, je model jednoduchým súborom volaní metód, ktoré vracajú obyčajné objekty Ruby, ktoré spracovávajú všetky interakcie (čítanie a zápis) z databázy. Takže podľa príkladu blogu bude rozhranie API, ktoré bude kontrolér používať na získavanie údajov pomocou modelu, vyzerať nejako takto Post.find(params[:id]) . The parametre je to, čo router analyzoval z adresy URL, Post je model. To robí SQL dotazy alebo robí čokoľvek, čo je potrebné na získanie blogového príspevku. Modely sa nachádzajú v aplikácia/modely .

Je dôležité poznamenať, že nie všetky akcie musia používať model. Interakcia s modelom sa vyžaduje iba vtedy, keď je potrebné načítať údaje z databázy alebo uložiť do databázy. Preto za ním v našom malom vývojovom diagrame umiestnime otáznik.



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

Výhľad

Konečne je čas začať generovať nejaké HTML. HTML nespracúva samotný ovládač, ani ho nespracúva model. Účelom použitia rámca MVC je rozdeliť všetko. Operácie databázy zostávajú v režime, generovanie HTML zostáva v zobrazení a radič (volaný routerom) ich volá obe.

HTML sa bežne generuje pomocou vloženého Ruby. Ak poznáte PHP, to znamená HTML súbor s vloženým PHP kódom, potom vám bude vložený Ruby veľmi známy. Tieto pohľady sa nachádzajú v aplikácia/zobrazenia a ovládač zavolá jeden z nich, aby vygeneroval výstup a poslal ho späť na webový server. Všetky údaje získané kontrolórom pomocou modelu budú vo všeobecnosti uložené v premenná inštancie ktoré vďaka určitej mágii Ruby budú dostupné ako premenné inštancie z pohľadu. Vložená Ruby tiež nepotrebuje generovať HTML, môže generovať akýkoľvek typ textu. Uvidíte to pri generovaní XML pre RSS, JSON atď.



Tento výstup je odoslaný späť na webový server, ktorý ho odošle späť do webového prehliadača, ktorý dokončí proces.

07 z 07

Kompletný obrázok

A to je všetko, tu je celý život žiadosti o webovú aplikáciu Ruby on Rails.



  1. Webový prehliadač - Prehliadač odošle požiadavku, zvyčajne v mene používateľa, keď klikne na odkaz.
  2. Webový server – Webový server prevezme požiadavku a odošle ju do aplikácie Rails.
  3. Router – Smerovač, prvá časť aplikácie Rails, ktorá vidí požiadavku, analyzuje požiadavku a určuje, ktorý pár ovládač/akcia má zavolať.
  4. Ovládač – Ovládač je tzv. Úlohou kontrolóra je získať údaje pomocou modelu a odoslať ich do zobrazenia.
  5. Model – Ak je potrebné získať nejaké údaje, model sa použije na získanie údajov z databázy.
  6. Zobrazenie – Údaje sa odošlú do zobrazenia, kde sa vygeneruje HTML výstup.
  7. Webový server - Vygenerovaný HTML je odoslaný späť na server, Rails je teraz hotový so žiadosťou.
  8. Webový prehliadač – server odošle dáta späť do webového prehliadača a zobrazia sa výsledky.