**Ruby on Rails** (edaspidi Rails) on avatud lähtekoodiga veebiraamistik, mis on kirjutatud Ruby programmeerimiskeeles. Railsi looja on David Heinemeier Hansson, kes aastal 2003 ekstraheeris komponendi oma suuremast projektist Basecamp ja hakkas seda edasi arendama. Aastal 2004 tuli Rails avalikuks avatud lähtekoodiga veebiraamistikuna ning Railsi esimene stabiilne versioon 1.0 tuli avalikuks 13. detsembril 2005. Railsi viimaseid versioone ja redaktsioone saab näha siit.

Tehniline ülevaade
------------------

Model-View-Controller (MVC) on veebiarenduses levinud tarkvara arhitektuurimuster. Nagu ka paljudes teistes veebiraamistikes, on see kasutusel ka Railsis. See jagab programmi kolmeks põhiliseks osaks: mudeliks, vaateks ja kontrolleriks.

#### Mudel

Mudel on infot käsitlev programmi osa, mis saab käsud kontrollerist ning edastab info vaatele. Seal asub rakenduse loogika ning seal toimub enamik selle tööst.

#### Vaade

Vaade on infot kasutajale esitav programmi osa. See võtab mudelist tuleva info ning kuvab selle veebilehele. Rails kasutab selleks erilist erb tüüpi faili, mis on mõeldud ainult Ruby programmeerimiskeelele. See teeb suhtlemise kontrolleriga lihtsaks. Lõpuks teisendatakse erb-fail HTML-failiks, et seda veebibrauseris kuvada.

#### Kontroller

Kontroller programmi ühendav lüli. See võtab vastu (kasutaja sisestatud) informatsiooni ning edastab selle koos käsuga mudelisse.

Tööprintsiibid
--------------

Rails on loodud suuresti toetudes kolmele printsiibile, mis kõik hõlbustavad programmeerija tööd:

#### *Convention over configuration*

*Convention over configuration* (CoC) on tarkvara disaini paradigma, mis lihtsustab programmeerija tööd seadistades automaatselt võimalikult palju vaikesätteid. See vähendab seadistamisele kuluvat aega ning teeb projektide üles seadmise mugavamaks.

#### *Don't repeat yourself*

*Don't repeat yourself* (DRY) on printsiip, mis pöörab programmeerija tähelepanu koodis esinevatele kordustele. Täpsemalt tähendab see, et kirjutatud programmis ei tohiks esineda mitut sama funktsionaalsusega koodijuppi.

#### *Fat models, skinny controllers*

*Fat models, skinny controllers* tähendab, et enamus programmi loogikast paikneb mudelis jättes kontrolleritesse ainult selleks hädavajalikud osad.

Objektide relatsiooniline vastendamine
--------------------------------------

**Objektide relatsiooniline vastendamise** (ORM) teegid vastendavad andmebaasis olevad tabelid koodis defineeritud klassidele, tabeli read objektidele ja tabeli veerud atribuutidele. Näiteks kui andmebaasis on tabel nimega kasutajad, siis on koodis olemas klass nimega Kasutajad ja sellel on vaikeseadistusega juba olemas meetodid, et andmeid andmebaasi salvestada, muuta ning sealt küsida teatud tunnuste põhjal.

### *Active Record*

***Active Record*** on programmi ORM kiht, mis on Railsiga kooskõlastatud. See on tööpõhimõttelt nagu iga teise programmeerimiskeele ORM mudelid, kuid see järgib *convention over configuration* paradigmat ning toob endaga kaasa palju vaikesätteid, mis teeb selle kasutamise väga lihtsaks. *Active Record*, võrreldes teiste keelte ORM kihtidega, vajab konfigureerimist ainult juhul, kui on vaja teha andmebaasist keerulisemaid päringuid. See teeb lisaks lihtsale andmebaasiga suhtlusele veel enamat. *Active Record* on võimeline ka kasutaja sisestatud andmeid valideerima ilma, et see oleks koodis täpsemalt kirjeldatud. Näiteks kui on veebileht, kus kasutaja peab täitma ankeeti ja ta täidab välja, mis nõuab numbrilist sisendit, tekstiga, suudab *Active Record* selle tuvastada ning välja tuua.

Viited
------

1. ↑  RailsCamma (21.09.2015). "The History of Ruby on Rails". *medium.com*. Vaadatud 03.12.2019.
2. ↑  Hansson, David H. (13.12.2005). "Rails 1.0: Party like it's one oh oh!". *weblog.rubyonrails.org*. Vaadatud 03.12.2019.
3. 1 2  Ruby, S. Thomas, D. Heinemeier Hansson, D. Agile Web Development with Rails 5. Raleigh, The Pragmatic Bookshelf, 2016. 42-44.