-{Ruby on Rails}- ili jednostavno -{Rails}- je razvojni okvir za veb, koji ima za cilj maksimizaciju programerske produktivnosti. Razvijen je pre više od deset godina.-{}- Napisan na programskom jeziku -{Ruby}- i danas čini okosnicu mnogih najpopularnijih aplikacija na internetu. U skladu sa time ima neverovatno aktivnu i entuzijastičnu zajednicu.

-{Rails}- je razvio -{David Heinemeier Hansson}- 2003. godine dok je radio na osnovama koda za -{Basecamp}-BaseCamp(alat za upravljanje projektima). David prestavlja -{Ruby on Rails}- i zvanično objavljuje njegov izvorni kod u julu 2004. godine. Tokom godina -{Rails}- kod se razvijao zadržavajući tri glavna principa: Programski jezik -{Ruby}- kao osnovu MVC arhiktetura Programerska sreća

Istorija

Prva verzija -{Ruby on Rails}- je nastala 2004. godine, a prva stabilna (1.0) je objavljena 13. decembra 2005. godine. Od tog trenutka -{Ruby On Rails}- dobija značajnu ulogu u svetu veb razvoja. Naredna verzija 2.0 je objavljena 6. decembra 2007. godine.

-{Rails}- 2.3 verzija je objavljena 15. marta 2009. godine sa velikim novim dostignućima u šablonima, ugnježdenim formama i -{Rack}--u (interfejs za razvoj veb aplikacija u Rubiju).

23. decembra 2008. godine frejmvork veb aplikacije, -{Merb}-, je lansiran i -{Ruby on Rails}- je objavio da će sarađivati sa projektom u cilju unapređivanja -{Merb}--a u verziji -{Rails}- 3, da bi se okončalo nepotrebno dupliranje. -{Merb}- se spojio sa -{Rails}--om u verziji 3.0.

Verzija 3.1 je objavljena 31. avgusta 2011. u kojoj se -{jQuery}- pojavljuje kao podrazumevana biblioteka za -{JavaScript}- i nedavno uveden -{CoffeeScript}-.

Verzija -{Rails}- 3.2 objavljena je 20. januara 2012. godine, sa brzim režimom razvoja i usmeravanjem mašine. -{Rails}- 3.2.x je poslednja verzija koja podržava -{Ruby}- 1.8.7 . -{Rails}- 2.2.12 podržava -{Ruby}- 2.0.

Verzija 4.0 je objavljena 25. juna 2013. godine predstavljajući turbolinkove, prenose uživo kao i pravljenje aktivnih resursa i drugih opcionih komponenti za njihovo razdvajanje na sisteme za upravljanje paketima.

Verzija 4.1 je objavljena 8. aprila 2014. godine predstavljajući -{Spring}-, -{Variants}-, enumeracijski tip i -{secrets.yml}-.

Verzija 4.2 je objavljena 19. decembra 2014. godine predstavljajući -{Active Job}-, asinhrone mejlove, veb konzole i strane ključeve.

Verzija 5.0 je objavljena 30. juna 2016. godine.

Verzija Datum 1.0 13. decembar 2005. 2.0 7. decembar 2007. 2.3 16. mart 2009. 3.0 29. avgust 2010. 3.1 29. avgust 2011. 3.2 20. januar 2012. 4.0 25. jun 2013. 4.1 8. april 2014. 4.2 19. decembar 2014. 5.0 30. jun 2016.

Razvoj

-{Ruby on Rails}- se često instalira koristeći -{RubyGems}-, sistem za upravljanje paketima koji je uključen u trenutnu verziju jezika -{Ruby}-. Mnogi -{Unix}- sistemi takođe podržavaju instalaciju -{Ruby on Rails}--a i zavisni su od njegovih izvornih sistema za upravljanje paketima. -{Ruby on Rails}- je uglavnom razvijen za servere baza podataka kao što su -{MySQL}- i -{PostgreSQL}- i veb server koji pokreće -{Phusion Passanger}- modul.Phusion Passenger modul

Filozofija i dizajn

-{Ruby on Rails}- podstiče naredne principe: Konvencija iznad konfiguracije Ne ponavljaj princip Debeli modeli, mršavi kontroleri

Konvencija iznad konfiguracije - znači da postoji konvencija koju programer treba da poštuje i da treba samo da odredi nekonvencijalne aspekte aplikacije. Na primer, ako imamo klasu -{Sale}- u modelu, odgovarajuća tabela u bazi podataka će se podrazumevano zvati -{sales}-. Generalno, -{Ruby on Rails}- dovodi do skraćivanja i ponovnog korišćenja istog koda.

Ne ponavljaj se - sugeriše programeru da nije dobro ponavljati iste delove koda. Na primer, koristeći modul -{ActiveRecord}- programer ne mora da definiše imena kolona u bazi podataka prilikom definicija klasa. Umesto toga, -{Ruby on Rails}- može da izvede ovu informaciju preko imena klase iz baze podataka.

Debeli modeli, mršavi kontroleri - većinu aplikacija logički treba smestiti unutar modela ostavljajući kontrolere sto je moguće slobodnijim.

Tehnički pregled

Kao i mnogi veb okviri -{Ruby on Rails}- koristi MVC arhitekturu, obrazac za organizovanje programiranja aplikacija. U podrazumevanoj konfiguraciji, model u programskom okviru (frejmvork) se povezuje sa tabelom u bazi podataka i sa -{Ruby}- fajlovima. Na primer, model klase -{User}- će obično biti definisan u fajlu -{"user.rb"}- u direktorijumu aplikacija/modeli i povezan sa tabelom -{"users"}- u bazi podataka. Programeri mogu da ignorišu ovu konvenciju i biraju različita imena za svoje modele, fajlove i baze podataka, ali to nije uobičajena praksa i nije u skladu sa principom "konvencija iznad konfiguracije". Kontroler je komponenta sa serverske strane -{Rails}--a koja odgovara spoljašnjim zahtevima veb servera aplikaciji. On određuje koji fajl se trenutno obrađuje. Kontroler može postaviti upit jednom ili više modela direktno za informacije i proslediti ih na pregled, kao i obezbediti jednu ili više akcija. Akcija je najčešće osnovna jedinica koja opisuje kako odgovoriti na specifičan spoljni zahtev veb pregledača. Takođe treba napomenuti da će akcija kontolera biti dostupna spoljnom veb zahtevu samo ako odgovarajuća putanja pokazuje na nju. -{Rails}- ohrabruje programere da koriste -{RESTful}- (-{Representational state transfer}--Transfer reprezentacije stanja), veb servis koji omogućava kompatibilnost između različitih računarskih sistema na internetu. Isto tako podržava rad sa putanjama koje uključuju akcije kao što su kreiraj, novi, izmeni, dopuni, uništi, prikaži i slično. Ove putanje dolaznih zahteva kontroleru mogu biti jednostavno postavljene u konfiguracijski fajl -{routes.rb}-.

-{Ruby on Rails}- uglavnom nije povezan na internet direktno već preko nekih veb servera. Od 2008. godine pa nadalje najkorišćeniji veb server za -{Ruby on Rails}- je -{Passenger}-. -{IBM}- takođe podržava -{Ruby on Rails}-. -{Rails}- je isto tako vredan pažnje zbog široke upotrebe u Javaskriptu , Javaskript okvirima, -{Script.aculo.us }-, za pisanje skripti korišćenjem -{AJAX}--a.-{CoffeeScript}- je predstavljen u verziji 3.1 kao podrazumevani jezik za Javaskript. Počev od verzije 2.0 -{Ruby on Rails}- nudi i -{HTML}- i -{XML}- kao standardni format za izlaz. U verziji 3.1 -{Sass}- je postavljen za standardni -{CSS}- obrazac. Server podrazumevano koristi ugrađen -{Ruby}- u -{HTML}- pregledu fajlova koji imaju -{html.rb}- ekstenziju. -{Rails}- podržava zamenu alternativnih jezika za šablone kao sto su -{HAML}- i -{Mustache}-. -{Ruby on Rails}- 3.0 je dizajniran da radi sa -{JRuby}- 1.5.2, dok kod ranijih verzija nije bilo podržano.

Performanse

Struktura frejmvorka

-{Rails}- je podeljen na razne pakete: -{Active Record}- (sistem za pristup bazama podataka), -{Active Resource}- (omogućava veb servis), -{Action Pack}-, -{Active Support}- i -{Action Mailer}-. Pre verzije 2.0 -{Ruby on Rails}- je takođe sadržao paket -{Action Web Service}- koji je zamenjen paketom -{Active Resource}-. Nezavisno od standardnih paketa, programeri mogu da instaliraju dodatke i da prošire postojeće pakete. Ranije verzije su podržavale dodatke unutar svojih uobičajnih okvira.

Rails obezbeđuje kompletne komponente za kreiranje veb aplikacija, od kojih su najvažnije: Pokretanje kontrolera Akcija pregleda Aktivan zapis Slanje poruka Aktivan izvor -{Railties}- Aktivna podrška

Pokretanje kontrolera

Pokretanje kontrolera je komponenta koja uređuje kontrolere u -{Rails}- aplikacijama. Pokretanjem rada kontrolera, frejmvork obrađuje dolazeće zahteve -{Rails}- aplikacija, izvlači parametre i otprema ih namenjenoj akciji. Servisi obezbeđeni ovom akcijom uključuju upravljanje sesijom, predstavljanje šablona i preusmeravanje upravljenja.

Akcija pregleda

-{Akcija View}- upravlja izgledom -{Rails}- aplikacija. Može da kreira i -{HTML}- i -{XML}- izlaz kao podrazumevani. Akcija -{View}- upravljaju šablonima, uključujući ugnježdene i parcijalne šablone, i uključuju ugrađenu -{AJAX}- podršku.

Aktivan zapis

Aktivan zapis je baza za modelovanje u -{Rails}- aplikacijama. Obezbeđuje nezavisnost baze podataka, osnovnu -{CRUD(Create, read, update and delete)}- funkcionalnost, naprednu pretragu i omogućava povezivanje jednog modela sa drugima među ostalim servisima.

Slanje poruka

Slanje poruka je frejmvork za izgradnju e-mail servisa. Možemo ga koristiti za slanje poruka zasnovanih na fleksibilnosti šablona ili da primimo i obradimo dolazeće poruke.

Aktivan izvor

Aktivan izvor obezbeđuje frejmvork za upravljanje konekcijama između biznis objekata -{RESTful}- veb servisa. Implementira način za povezivanje veb baziranih resursa sa lokalnim resursima -{CRUD(Create Read Update Delete}-) semantikom.

-{Railties}-

-{Railties}- je jezgro -{Rails}- koda nad kojim su izgrađene nove -{Rails}- aplikacije i objedinjuje različite veb okvire u bilo kojoj -{Rails}- aplikaciji.

Aktivna podrška

Aktivna podrška je skupa kolekcija korisnih klasa i standardnih -{Ruby}- bibliotečkih ekstenzija koje se koriste u -{Rails-u}-, kako u kodu jezgra, tako i u aplikacijama.

Skalabilnost

-{Rails}- koji se pokreće na -{Ruby}- interpretatoru -{Matz}- je kritikovan zbog problema sa skalabilnošću. Ta kritika se često pominje zbog raznih grešaka u okviru -{Twitter-a}- tokom 2007. godine i 2008. godine, što je podstaklo programere da -{Twitter}- delimično prebace na programski jezik -{Scala}- (koji se pokreće na Java virtuelnoj mašini (JVM)). -{Ruby on Rails}- je pokretao korisnički interfejs -{Twitter-a}- sve do 2011. godine, kada je zamenjen zbog performansi.

Uprkos kritikama i poređenjima sa -{Javom}-, -{Gartner Research}- je zaključio 2011. godine da mnoge kompanije koje se bave veb programiranjem, koriste -{Ruby on Rails}- kako bi pravile agilne skalabilne aplikacije. Neki od najvećih sajtova koji koriste -{Ruby on Rails}- su -{Airbnb}-, -{GitHub}-, -{Scribd}-, -{Shopity}-, -{Hulu}- i -{BaseCamp}-.

Procenjuje se da od januara 2016. godine preko 1.2 miliona veb sajtova koriste -{Ruby on Rails}-.

Bezbednost

24. septembra 2013. godine, prijavljen je bezbednosni propust u -{Ruby on Rails}--u. U podrazumevanoj konfiguraciji cela -{hash}- sesija je smeštena unutar sesije kolačića(-{cookies}-) (poznata kao -{CookieStore}-) dozvoljavajući bilo koju autentifikovanu sesiju da se uloguje kao ciljani korisnik u bilo kom trenutku u budućnosti. Kao radno okruženje administratori su savetovani da kolačiće smeste na server koristeći mehanizme kao što je -{ActiveRecordStore}-. Istraživači -{Daniel Jackson}- i -{Joseph Near}- su razvili debager "-{Space}-". On može da analizira pristup podacima preko pokretanja -{Rails}- programa i proveri da li se program pokreće po pravilima u okviru ograničenja pristupa. 15. aprila 2016. godine -{Joseph Near}- je izjavio da su analizom 50 popularnih veb aplikacija, koje koriste -{Space}-, otkrivena 23 prethodno nepoznata bezbednosna propusta.

Reference

Категорија:Слободни софтвер написан у Рубију Категорија:Софтвер са МИТ лиценцом Категорија:Веб фрејмворк Категорија:Бесплатне рачунарске библиотеке Категорија:Софтвер 2004. Категорија:Web 2.0