Рубy он Раилс

С Википедије, слободне енциклопедије
Ruby on Rails
Оригинални називенгл. Ruby on Rails
Аутор(и)David Hansson
Актуелна верзија5.0,објављена 30. јуна 2016. године.
ЛиценцаМИТ лиценца
Веб-сајтhttp://rubyonrails.org

Ruby on Rails или једноставно Rails је развојни оквир за веб, који има за циљ максимизацију програмерске продуктивности. Развијен је пре више од десет година.[1] Написан на програмском језику Ruby и данас чини окосницу многих најпопуларнијих апликација на интернету[2]. У складу са тиме има невероватно активну и ентузијастичну заједницу.

Rails је развио David Heinemeier Hansson 2003. године док је радио на основама кода за Basecamp[3](алат за управљање пројектима). Давид преставља Ruby on Rails и званично објављује његов изворни код у јулу 2004. године[4]. Током година Rails код се развијао задржавајући три главна принципа:

Историја[уреди | уреди извор]

Прва верзија Ruby on Rails је настала 2004. године, а прва стабилна (1.0) је објављена 13. децембра 2005. године. Од тог тренутка Ruby On Rails добија значајну улогу у свету веб развоја. Наредна верзија 2.0 је објављена 6. децембра 2007. године.

Rails 2.3 верзија је објављена 15. марта 2009. године са великим новим достигнућима у шаблонима, угњежденим формама и Rack-у (интерфејс за развој веб апликација у Рубију).

23. децембра 2008. године фрејмворк веб апликације, Merb, је лансиран и Ruby on Rails је објавио да ће сарађивати са пројектом у циљу унапређивања Merb-а у верзији Rails 3, да би се окончало непотребно дуплирање. Merb се спојио са Rails-ом у верзији 3.0.

Верзија 3.1 је објављена 31. августа 2011. у којој се jQuery појављује као подразумевана библиотека за JavaScript и недавно уведен CoffeeScript.

Верзија Rails 3.2 објављена је 20. јануара 2012. године, са брзим режимом развоја и усмеравањем машине. Rails 3.2.x је последња верзија која подржава Ruby 1.8.7 . Rails 2.2.12 подржава Ruby 2.0.

Верзија 4.0 је објављена 25. јуна 2013. године представљајући турболинкове, преносе уживо као и прављење активних ресурса и других опционих компоненти за њихово раздвајање на системе за управљање пакетима.

Верзија 4.1 је објављена 8. априла 2014. године представљајући Spring, Variants, енумерацијски тип и secrets.yml.

Верзија 4.2 је објављена 19. децембра 2014. године представљајући Active Job, асинхроне мејлове, веб конзоле и стране кључеве.

Верзија 5.0 је објављена 30. јуна 2016. године.

Верзија Датум
1.0[5] 13. децембар 2005.
2.0[6] 7. децембар 2007.
2.3[7] 16. март 2009.
3.0[8] 29. август 2010.
3.1[9] 29. август 2011.
3.2[10] 20. јануар 2012.
4.0[11] 25. јун 2013.
4.1[12] 8. април 2014.
4.2[13] 19. децембар 2014.
5.0[14] 30. јун 2016.

Развој[уреди | уреди извор]

Ruby on Rails се често инсталира користећи RubyGems, систем за управљање пакетима који је укључен у тренутну верзију језика Ruby. Многи Unix системи такође подржавају инсталацију Ruby on Rails-а и зависни су од његових изворних система за управљање пакетима. Ruby on Rails је углавном развијен за сервере база података као што су MySQL и PostgreSQL и веб сервер који покреће Phusion Passanger модул.[15]

Филозофија и дизајн[уреди | уреди извор]

Ruby on Rails подстиче наредне принципе:

  • Конвенција изнад конфигурације
  • Не понављај принцип[16]
  • Дебели модели, мршави контролери

Конвенција изнад конфигурације - значи да постоји конвенција коју програмер треба да поштује и да треба само да одреди неконвенцијалне аспекте апликације. На пример, ако имамо класу Sale у моделу, одговарајућа табела у бази података ће се подразумевано звати sales. Генерално, Ruby on Rails доводи до скраћивања и поновног коришћења истог кода.

Не понављај се - сугерише програмеру да није добро понављати исте делове кода. На пример, користећи модул ActiveRecord програмер не мора да дефинише имена колона у бази података приликом дефиниција класа. Уместо тога, Ruby on Rails може да изведе ову информацију преко имена класе из базе података.

Дебели модели, мршави контролери - већину апликација логички треба сместити унутар модела остављајући контролере сто је могуће слободнијим.

Технички преглед[уреди | уреди извор]

Као и многи веб оквири Ruby on Rails користи МВЦ архитектуру, образац за организовање програмирања апликација. У подразумеваној конфигурацији, модел у програмском оквиру (фрејмворк) се повезује са табелом у бази података и са Ruby фајловима. На пример, модел класе User ће обично бити дефинисан у фајлу "user.rb" у директоријуму апликација/модели и повезан са табелом "users" у бази података. Програмери могу да игноришу ову конвенцију и бирају различита имена за своје моделе, фајлове и базе података, али то није уобичајена пракса и није у складу са принципом "конвенција изнад конфигурације". Контролер је компонента са серверске стране Rails-а која одговара спољашњим захтевима веб сервера апликацији. Он одређује који фајл се тренутно обрађује. Контролер може поставити упит једном или више модела директно за информације и проследити их на преглед, као и обезбедити једну или више акција. Акција је најчешће основна јединица која описује како одговорити на специфичан спољни захтев веб прегледача. Такође треба напоменути да ће акција контолера бити доступна спољном веб захтеву само ако одговарајућа путања показује на њу. Rails охрабрује програмере да користе RESTful (Representational state transfer-Трансфер репрезентације стања), веб сервис који омогућава компатибилност између различитих рачунарских система на интернету. Исто тако подржава рад са путањама које укључују акције као што су креирај, нови, измени, допуни, уништи, прикажи и слично. Ове путање долазних захтева контролеру могу бити једноставно постављене у конфигурацијски фајл routes.rb.

Ruby on Rails углавном није повезан на интернет директно већ преко неких веб сервера. Од 2008. године па надаље најкоришћенији веб сервер за Ruby on Rails је Passenger. IBM такође подржава Ruby on Rails. Rails је исто тако вредан пажње због широке употребе у Јаваскрипту , Јаваскрипт оквирима, Script.aculo.us Архивирано на сајту Wayback Machine (28. новембар 2016), за писање скрипти коришћењем AJAX-а.CoffeeScript је представљен у верзији 3.1 као подразумевани језик за Јаваскрипт. Почев од верзије 2.0 Ruby on Rails нуди и HTML и XML као стандардни формат за излаз. У верзији 3.1 Sass је постављен за стандардни CSS образац. Сервер подразумевано користи уграђен Ruby у HTML прегледу фајлова који имају html.rb екстензију. Rails подржава замену алтернативних језика за шаблоне као сто су HAML и Mustache. Ruby on Rails 3.0 је дизајниран да ради са JRuby 1.5.2, док код ранијих верзија није било подржано.

Перформансе[уреди | уреди извор]

Структура фрејмворка[уреди | уреди извор]

Rails је подељен на разне пакете: Active Record (систем за приступ базама података), Active Resource (омогућава веб сервис), Action Pack, Active Support и Action Mailer. Пре верзије 2.0 Ruby on Rails је такође садржао пакет Action Web Service који је замењен пакетом Active Resource. Независно од стандардних пакета, програмери могу да инсталирају додатке и да прошире постојеће пакете. Раније верзије су подржавале додатке унутар својих уобичајних оквира.

Раилс обезбеђује комплетне компоненте за креирање веб апликација, од којих су најважније:

  • Покретање контролера
  • Акција прегледа
  • Активан запис
  • Слање порука
  • Активан извор
  • Railties
  • Активна подршка

Покретање контролера[уреди | уреди извор]

Покретање контролера је компонента која уређује контролере у Rails апликацијама. Покретањем рада контролера, фрејмворк обрађује долазеће захтеве Rails апликација, извлачи параметре и отпрема их намењеној акцији. Сервиси обезбеђени овом акцијом укључују управљање сесијом, представљање шаблона и преусмеравање управљења.

Акција прегледа[уреди | уреди извор]

Akcija View управља изгледом Rails апликација. Може да креира и HTML и XML излаз као подразумевани. Акција View управљају шаблонима, укључујући угњеждене и парцијалне шаблоне, и укључују уграђену AJAX подршку.

Активан запис[уреди | уреди извор]

Активан запис је база за моделовање у Rails апликацијама. Обезбеђује независност базе података, основну CRUD(Create, read, update and delete) функционалност, напредну претрагу и омогућава повезивање једног модела са другима међу осталим сервисима.

Слање порука[уреди | уреди извор]

Слање порука је фрејмворк за изградњу е-маил сервиса. Можемо га користити за слање порука заснованих на флексибилности шаблона или да примимо и обрадимо долазеће поруке.

Активан извор[уреди | уреди извор]

Активан извор обезбеђује фрејмворк за управљање конекцијама између бизнис објеката RESTful веб сервиса. Имплементира начин за повезивање веб базираних ресурса са локалним ресурсима CRUD(Create Read Update Delete) семантиком.

Railties[уреди | уреди извор]

Railties је језгро Rails кода над којим су изграђене нове Rails апликације и обједињује различите веб оквире у било којој Rails апликацији.

Активна подршка[уреди | уреди извор]

Активна подршка је скупа колекција корисних класа и стандардних Ruby библиотечких екстензија које се користе у Rails-u, како у коду језгра, тако и у апликацијама.[17]

Скалабилност[уреди | уреди извор]

Rails који се покреће на Ruby interpretatoru Matz је критикован због проблема са скалабилношћу. Та критика се често помиње због разних грешака у оквиру Twitter-a током 2007. године и 2008. године[18], што је подстакло програмере да Twitter делимично пребаце на програмски језик Scala (који се покреће на Јава виртуелној машини (ЈВМ))[19]. Ruby on Rails je pokretao korisnički interfejs Twitter-a све до 2011. године, када је замењен због перформанси.

Упркос критикама и поређењима са Javom, Gartner Research је закључио 2011. године да многе компаније које се баве веб програмирањем, користе Ruby on Rails како би правиле агилне скалабилне апликације[20]. Неки од највећих сајтова који користе Ruby on Rails су Airbnb, GitHub, Scribd, Shopity, Hulu и BaseCamp[21].

Процењује се да од јануара 2016. године преко 1.2 милиона веб сајтова користе Ruby on Rails[22].

Безбедност[уреди | уреди извор]

24. септембра 2013. године, пријављен је безбедносни пропуст у Ruby on Rails-у. У подразумеваној конфигурацији цела hash сесија је смештена унутар сесије колачића(cookies) (позната као CookieStore) дозвољавајући било коју аутентификовану сесију да се улогује као циљани корисник у било ком тренутку у будућности. Као радно окружење администратори су саветовани да колачиће сместе на сервер користећи механизме као што је ActiveRecordStore. Истраживачи Daniel Jackson и Joseph Near су развили дебагер "Space". Он може да анализира приступ подацима преко покретања Rails програма и провери да ли се програм покреће по правилима у оквиру ограничења приступа. 15. априла 2016. године Joseph Near је изјавио да су анализом 50 популарних веб апликација, које користе Space, otkrivena 23 prethodno nepoznata bezbednosna propusta.[23]

Reference[уреди | уреди извор]

  1. ^ Francl, Luke. „Looking Backward: Ten Years on Rails”. www.recursion.org (на језику: engleski). 
  2. ^ „Ruby on Rails…” (на језику: engleski). Приступљено 29. 11. 2016. 
  3. ^ BaseCamp
  4. ^ Gunner Technology. „Ruby on Rails History — A Look Back”. Архивирано из оригинала 06. 04. 2017. г. Приступљено 29. 11. 2016. 
  5. ^ David. „Rails 1.0: Party like it's one oh oh!”. weblog.rubyonrails.org. 
  6. ^ „Rails 2.0: It's done!”. Приступљено 29. 11. 2016. 
  7. ^ „Rails 2.3: Templates, Engines, Rack, Metal, much more!”. Приступљено 29. 11. 2016. 
  8. ^ „Rails 3.0: It's done!”. Приступљено 29. 11. 2016. 
  9. ^ „[ANN] Rails 3.1.0.rc8”. Приступљено 29. 11. 2016. 
  10. ^ „Rails 3.2.0: Faster dev mode & routing, explain queries, tagged logger, store”. Приступљено 29. 11. 2016. 
  11. ^ „Rails 4.0.0”. Приступљено 29. 11. 2016. 
  12. ^ „Rails 4.1.0: Spring, Variants, Enums, Mailer previews, secrets.yml”. Приступљено 29. 11. 2016. 
  13. ^ „Rails 4.2: Active Job, Asynchronous Mails, Adequate Record, Web Console, Foreign Keys”. Приступљено 29. 11. 2016. 
  14. ^ „Rails 5.0: Action Cable, API mode, and so much more”. Приступљено 29. 11. 2016. 
  15. ^ Phusion Passenger modul
  16. ^ „Getting Started with Rails”. Приступљено 29. 11. 2016. 
  17. ^ Mike Gunderloy; Dave Rothlisberger. „Getting started with Rails”. guides.rubyonrails.org (на језику: engleski). Приступљено 5. 12. 2016. 
  18. ^ Josh Kenzer (29. 03. 2007). „5 Question Interview with Twitter Developer Alex Payne” (на језику: engleski). Архивирано из оригинала 23. 04. 2009. г. Приступљено 29. 11. 2016. 
  19. ^ Cade Metz (01. 04. 2009). „Twitter jilts Ruby for Scala” (на језику: engleski). Приступљено 29. 11. 2016. 
  20. ^ Tom Mornini; Engine Yard (11. 05. 2011). „Here's Why Ruby On Rails Is Hot” (на језику: engleski). Приступљено 29. 11. 2016. 
  21. ^ Kelli Smith (02. 02. 2015). „37 Sites You LOVE Built With Ruby On Rails” (на језику: engleski). Приступљено 29. 11. 2016. 
  22. ^ „Ruby on Rails Usage Statistics”. Приступљено 29. 11. 2016. 
  23. ^ Larry Hardesty (15. 04. 2016). „Patching up Web applications”. Приступљено 29. 11. 2016.