Kai rašote savo programas nuo pradžios iki pabaigos, jas lengva pamatyti srauto valdymas. Programa prasideda čia, ten yra kilpa, čia yra metodų skambučiai, viskas matoma. Tačiau „Rails“ programoje viskas nėra taip paprasta. Bet kokio pobūdžio sistemoje atsisakote tokių dalykų, kaip „srautas“, valdymo, norėdami greičiau ar paprasčiau atlikti sudėtingas užduotis. „Ruby on Rails“ atveju srauto valdymas yra valdomas už scenos, o viskas, kas jums liko, yra (daugiau ar mažiau) modelių, apžvalgos ir valdiklių kolekcija.
Bet kurios interneto programos esmė yra HTTP. HTTP yra tinklo protokolas, kurį naudoja jūsų interneto naršyklė kalbėdamasi su interneto serveriu. Štai iš kur kilę tokie terminai kaip „prašymas“, „GET“ ir „POST“, jie yra pagrindinis šio protokolo žodynas. Kadangi „Rails“ yra to abstrakcija, mes ne daug laiko praleisime apie tai kalbėdami.
Kai atidarote tinklalapį, spustelėkite nuorodą arba pateikite formą interneto naršyklėje, naršyklė prisijungs prie interneto serverio per TCP / IP. Tada naršyklė siunčia serveriui „užklausą“, pagalvokite apie tai kaip apie pašto formą, kurią naršyklė užpildo prašydama informacijos tam tikrame puslapyje. Galiausiai serveris siunčia interneto naršyklei „atsakymą“. „Ruby on Rails“ nėra žiniatinklio serveris, žiniatinklio serveris gali būti bet koks iš Webrick (kas dažniausiai nutinka paleidus Rails serverį iš
komandinė eilutė) į „Apache HTTPD“ (žiniatinklio serveris, maitinantis didžiąją dalį žiniatinklio). Žiniatinklio serveris yra tik tarpininkas, jis priima užklausą ir perduoda ją jūsų „Rails“ programai, kuris sugeneruoja atsakymą ir perduoda jį atgal į serverį, kuris savo ruožtu siunčia jį atgal į klientas. Taigi srautas kol kas yra:Vienas iš pirmųjų dalykų, kurį „Rails“ programa daro su užklausa, yra siųsti jį per maršrutizatorių. Kiekviena užklausa turi URL, būtent tai rodoma žiniatinklio naršyklės adreso juostoje. Maršrutizatorius nustato, ką reikia daryti su tuo URL, jei URL yra prasmingas ir jei URL yra kokių nors parametrų. Maršrutizatorius sukonfigūruotas konfigūracija / maršrutai.rb.
Pirmiausia žinokite, kad pagrindinis maršrutizatoriaus tikslas yra suderinti URL su valdikliu ir veiksmą (plačiau apie juos vėliau). Kadangi dauguma „Rails“ programų yra „RESTful“, o „RESTful“ programose dalykai vaizduojami naudojant išteklius, pamatysite tokias eilutes kaip ištekliai: žinutės tipinėse „Rails“ programose. Tai atitinka tokius URL adresus kaip /posts/7/edit su pranešimų valdytoju Redaguoti veiksmas pašte, kurio ID yra 7. Maršrutizatorius tiesiog nusprendžia, kur nukreipti. Taigi mūsų [Rails] bloką galima šiek tiek išplėsti.
Dabar, kai maršrutizatorius nusprendė, kuriam valdikliui nusiųsti prašymą, ir kokiam veiksmui atlikti tą valdiklį, jis siunčia jį toliau. Kontrolierius yra susijusių veiksmų grupė, visa tai susiejama klasėje. Pavyzdžiui, internetiniame dienoraštyje visas kodas, skirtas peržiūrėti, kurti, atnaujinti ir ištrinti tinklaraščio įrašus, yra susiejamas kartu su valdikliu, pavadinimu „Skelbti“. Veiksmai yra tiesiog normalūs metodai šios klasės. Valdikliai yra programa / valdikliai.
Tarkime, interneto naršyklė atsiuntė užklausą dėl /posts/42. Maršrutizatorius nusprendžia, kad tai reiškia Paštu valdiklis, Rodyti metodas ir rodomo įrašo ID yra 42, todėl tai vadina Rodyti metodas su šiuo parametru. Rodyti metodas neatsako už modelio naudojimą duomenims gauti ir peržiūros naudojimą išvestims kurti. Taigi mūsų išplėstas [Rails] blokas yra dabar:
Modelis yra paprasčiausias suprasti ir sunkiausiai įgyvendinamas. Modelis yra atsakingas už sąveiką su duomenų baze. Paprasčiausias būdas paaiškinti modelį yra paprastas metodo iškvietimų rinkinys, kuris grąžina paprastus „Ruby“ objektus, kurie tvarko visas sąveikas (skaito ir rašo) iš duomenų bazės. Taigi, sekdamas tinklaraščio pavyzdžiu, API, kurią valdiklis naudos duomenims nuskaityti, naudojant modelį, atrodys panašiai „Post.find“ (params [: id]). params tai, ką maršrutizatorius išanalizavo iš URL, pavyzdys yra „Post“. Tai sukelia SQL užklausas arba daro viską, kas reikalinga tinklaraščio įrašui gauti. Modeliai yra programa / modeliai.
Svarbu pažymėti, kad ne visiems veiksmams reikia naudoti modelį. Sąveikauti su modeliu reikia tik tada, kai duomenis reikia įkelti iš duomenų bazės arba išsaugoti duomenų bazėje. Iš esmės po juo į savo mažą schemą pateiksime klaustuką.
Pagaliau atėjo laikas pradėti generuoti HTML. HTML ne tvarko pats valdiklis, ne modelis. MVC karkaso esmė yra viską suskaidyti į segmentus. Duomenų bazės operacijos veikia režimu, HTML generavimas lieka vaizde, o valdiklis (kurį vadina maršrutizatorius) skambina jiems abiems.
Paprastai HTML sukuriamas naudojant įterptąjį „Ruby“. Jei esate susipažinęs su PHP, tai yra HTML failas su įterptu PHP kodu, tada įdėtasis „Ruby“ bus labai pažįstamas. Šie vaizdai yra programa / rodiniai, o valdiklis paskambins vienam iš jų, kad būtų sugeneruotas išėjimas ir nusiųstas atgal į žiniatinklio serverį. Visi duomenys, kuriuos valdiklis gauna pagal modelį, paprastai bus saugomi egzemplioriaus kintamasis kuris dėl tam tikros „Ruby“ magijos bus prieinamas kaip egzempliorių kintamasis rodinyje. Be to, įterptajam „Ruby“ nereikia generuoti HTML, jis gali generuoti bet kokio tipo tekstą. Tai pamatysite generuodami XML RSS, JSON ir kt.
Šis išėjimas siunčiamas atgal į žiniatinklio serverį, kuris siunčia jį atgal į interneto naršyklę, kuri užbaigia procesą.