Мэта курса – даць студэнтам усе навыкі для самастойнай пабудовы web-прыкладанняў і падрыхтаваць да самастойага вырашэння праблемаў. Асаблівасць курса - сінхроннае (а не паслядоўнае) вывучэнне мовы Ruby і фрэймўорка Ruby on Rails. Гэта зроблена для таго, каб студэнты хутчэй змаглі прыступіць да практыкі замест вырашэння абстрактных задачаў і "вучобы дзеля вучобы". Таму на працягу ўсяго курса будзе практыкавацца прафесійны падыход да вырашэння праблемаў і "вынаходніцтва ровараў" будзе зведзена да мінімума. Але не трэба ствараць ілюзій - каб быць сапраўдным экспертам і эфектыўна вырашаць задачы web-распрацоўкі на Ruby on Rails, вывучэнне мовы Ruby з'яўляецца неабходным. Але задача "навучыць праграмаваць" выходзіць за межы курса, бо адзіны чалавек, які можа навучыць вас праграмаваць - гэта Вы сам.
Акрамя ўласна вывучэння Ruby on Rails, на курсе студэнты атрымаюць веды па тэхналогіях HTML, CSS, JavaScript, SQL. Акрамя гэтага, будуць закрануты пытанні разгортвання прыкладанняў на сервер. Карацей, студэнты пазнаёмяцца з поўным цыклам распрацоўкі web-прыкладанняў.
Ruby on Rails - гэта асяроддзе для web-распрацоўкі, з дапамогай якога задачы пабудовы, падтрымкі і разгортвання web-прыкладанняў робяцца вельмі эфектыўнымі і даволі простымі. Rails-прыкладанні пішуцца на Ruby - гэта сучасная высокаўзроўневая ААП-мова праграмавання. Twitter, GitHub, Shopify, Groupon, Airbnb, SoundCloud, Slideshare - гэтыя прадукты і амаль мільён іншых сайтаў (са спіса BuiltWith.com) пабудаваныя на Rails. Ёсць шэраг прычын, чаму фрэймўорк Ruby on Rails такі папулярны.
Ruby on Rails - гэта праект з адкрытым кодам, які распаўсюджваецца пад ліцэнзіяй MIT. Любы распрацоўшчык можа зрабіць свой унёсак для развіцця праекта. Любы чалавек можа карыстацца зыходным кодам для сваіх патрэбаў без карпаратыўнага дыктату. Паглядзіце статыстыку выкарыстання моваў праграмавання на github.
Ёсць цікавы падыход для апісання развіцця тэхналогій - Hype Cycle. Адпаведна гэтаму падыходу, Ruby on Rails зараз знаходзіцца ў "плато прадуктыўнасці". І гэта не дзіўна: за 12 гадоў свайго развіцця фрэймўорк Rails значна эвалюцыянаваў, аброс магутнай супольнасцю і заняў сваю нішу сярод web-тэхналогій.
Супольнасць Rails-распрацоўшчыкаў - вельмі вялікая і актыўная. Добрай практыкай у community лічыцца наступны падыход: узнікла праблема - вырашы праблему - падзяліся рашэннем з супольнасцю. Але, часцей за ўсё бывае так, што хтосці ўжо сутыкнуўся з гэтай праблемай ці задачай раней, і схема выглядае наступным чынам: узнікла праблема - знайдзі рашэнне праз гугл - вырашы праблему. Большасць праблем, з якімі вы сутыкнёцеся на пачатковым этапе трывіяльныя і даўно пройдзеныя, таму адказы на значную частку пытанняў можна будзе знайсці на StackOverflow.
Варта таксама адзначыць, што існуе вялікая колькасць адукацыйных матэр'ялаў, туторыялаў, гайдаў, курсаў, скрынкастаў і кніг па Ruby on Rails. Некаторыя рэкамендацыі па матэр'ялах для самастойнага вывучэння вы можаце знайсці ў рэпазіторыі курса.
З Rails вам не трэба кожны раз самастойна вырашаць большасць стандартных задач web-распрацоўкі: аўтэнтыфікацыя, аўтарызацыя, прэкампіляцыя ассетаў, стварэнне адмінак, JSON API - кожная з гэтых задач можа вырашыцца ўсяго толькі адным радком кода ў гемфайле (што такое гемфайл чытайце ў наступным занятку). І нават больш спецыфічныя задачы, такія як пагінацыя, запампоўка выяваў, аўтаматычны дэплоймент і шмат чаго яшчэ ўжо вырашаны і аформлены ў гемы (гэта адмысловыя Ruby-бібліятэкі). Такім чынам, распрацоўшчык можа сканцэнтравацца на вырашэнні канкрэтных праблемаў свайго прыкладання. Працэс пабудовы прадукта становіцца максімальна эфектыўным, а працэс кодзінга прыносіць максімальнае задавальненне праграмісту.
Давайце паглядзім, што уяўляюць сабой сучасныя паўнавартасныя web-прыкладанні. API-centered прыкладанні перадаюць дадзеныя не толькі на кліентскую частку (web-сайт), а таксама даюць магчымасць рабіць мабільныя прыкладанні на аснове API, і больш за тое, дазваляюць іншым распрацоўшчыкам ствараць свае прыкладанні. Rails выдатна падыходзіць для пабудовы API. Апошнім часам для пабудовы front-end часткі прыкладання трэндам стала выкарыстанне кліентскіх MVC-фрэймўоркаў (Angular, Backbone, Ember). Нават калі на кліентскай частцы вы захочаце выкарыстоўваць падобны JS-фрэймўорк, вы зможаце вельмі проста інтэграваць яго ў Rails-экасістэму. Таксама Rails выдатна падыходзіць для пабудовы стартапаў, з-за высокай хуткасці і эфектыўнасці распрацоўкі. Увогуле, выкарыстанне Rails не абмежавана нейкімі нішамі ці задачамі.
З ідэяй Domain Specific Language можна пазнаёміцца у артыкуле Марціна Фаўлера. Ruby - мова праграмавання, з дапамогай якой вельмі зручна будаваць DSL. Rails напісаны на Ruby і прызначаны для пабудовы web-прыкладанняў. З дапамогай магутных інструментаў Rails можна вельмі проста і элегантна рашаць розныя задачы web-праграмавання.
Усе прыкладанні Rails пабудаваны на аснове Model-View-Controller архітэктуры. Паттэрн MVC чотка падзяляе прыкладанне на 3 кампаненты: мадэль (адказвае за алгарытмы і бізнэс-логіку), прадстаўленне (адказвае за вывад дадзеных карыстальніку) і кантроллер (адказвае за перадачу дадзеных карыстальнікам мадэлі і перадачу дадзеных з мадэлі у View) .
Тэставанне прыкладанняў Rails вельмі зручна з-за таго, што фрэймўорк пастаўляецца з убудаванымі інструментамі тэставання.
З Rails вам не трэба займацца вазнёй са знешнімі файламі канфігурацыі. Любое Ruby on Rails прыкладанне з самага пачатку згенеравана з улікам рацыянальных і эфектыўных пагаджэнняў. З іншага боку, кожны распрацоўшчым можа без праблем змяніць гэтыя пачатковыя канфігурацыі для свайго прыкладання.
Don't Repeat Yourself - гэта прынцып філасофіі Rails, сутнасць якога ў тым, што кожны кавалак інфармацыі павінен мець толькі адзінае адлюстраванне ў кодзе сістэмы. Калі прытрымлівацца гэтага прынцыпа, прыкладанні будзе значна зручней падтрымліваць і змяняць, акрамя гэтага, зніжаецца колькасць багаў.
Перш за ўсе, варта акрэсліць, што выбар інструментаў - гэта асабістая справа (і асабісты галаўны боль) кожнага студэнта. Але я зраблю рэкамендацыі па выбару інструментаў, каб мінімізаваць гэты галаўны боль і засяродзіцца непасрэдна на вывучэнні тэхналогій.
Я рэкамендую выкарыстоўваць адзін з дыстрыбутываў Linux (напрыклад, Ubuntu 14.04 LTS). Усе прыклады каманд ў гэтым курсе па змоўчванні будуць адносіцца да тэрмінала Linux.
Чаму Linux, а не Windows? Значная колькасць інсрументаў распрацоўкі і бібліятэк (напрыклад RVM), і нават новыя версіі Ruby лепей аптымізаваны для Linux. А некаторыя бібліятэкі ўвогуле не сумяшчальныя з Windows (напрыклад гем Whenewer, які працуе з кронам Linux). З такімі спецыфічнымі задачамі, як апрацоўка бінарных файлаў, праца з базамі дадзеных і лакальным вэб-серверам лепей спраўляюцца *nix сістэмы. Паглядзіце таксама статыстыку выкарыстання OS у вэбе.
Кампанія JetBrains дае студэнтам нашага курса адмысловыя бясплатныя ліцэнзіі на выдатны прадукт RubyMine. Я рэкамендую скарыстацца гэтай магчымасцю.
Ruby Version Manager - гэта інструмент для кіравання і усталёўкі розных версій Ruby на адну машыну. Таксама, з дапамогай RVM вельмі зручна кіраваць ізаляванымі наборамі гемаў (гемсэтамі) для кожнага асобнага праекта.
Усталёваем cUrl i RVM:
$ sudo apt-get install curl
$ curl -L https://get.rvm.io | bash -s
Запускаем RVM і ўсталёўваем залежнасці:
$ source /home/ubuntu/.rvm/scripts/rvm
$ rvm requirements
У будучыні могуць спатрэбіцца дадатковыя пакеты, усталюем іх:
$ sudo apt-get -y install build-essential openssl libxml2-dev libxslt-dev subversion
Зараз можна паглядзць, якія версіі Ruby даступныя для усталёўкі:
$ rvm list known
Усталёўваем Ruby. Падчас першапачатковай усталёўкі неабходна пазначыць размяшчэнне OpenSSL:
$ rvm install 2.2.0 --with-openssl-dir=$HOME/.rvm/usr
Ствараем гемсэт для нашага першага праекта:
$ rvm use 2.2.0@courseby --create --default
Разам з RVM па змоўчванні пастаўляецца мэнэджэр Ruby-пакетаў RubyGems, з дапамогай якога вельмі проста усталяваць любы з сотні тысяч Ruby гемаў. Зараз нам трэба паставіць Rails:
$ gem install rails --version 4.2.0
Нам таксама спатрэбіцца ўсталяваць JavaScript Runtime, таму не будзем адкладывыць, і зробім усю нудную працу з самага пачатку:
$ sudo apt-add-repository ppa:chris-lea/node.js
$ sudo apt-get update
$ sudo apt-get install nodejs
Git - вельмі магутны інструмент для кантроля версій файлаў. З дапамогай яго мы зможам у любы момант вярнуцца да пэўнага стану нашага праекта, праглядзець гісторыю змяненняў, а таксама мець надзейны бэкап. Git - выдатны інструмент для працы ў камандзе. Усталяваць яго вельмі проста:
$ sudo apt-get install git