GABRIEL GUIMARAES: Гэта CS50. Сардэчна запрашаем Дзіўныя Web Apps з Рубінам на Rails. Так што для тых, хто цікавіцца вэб- Распрацоўка і выраб сайтаў, вэб- прыкладання, Рубін на рэйкі гэта дзіўны інструмент, які Twitter, GitHub, Groupon, і ўсякія вельмі прыемна, і вялікія, вэб-прыкладанні, выкарыстоўваючы ў за апошнія некалькі гадоў. І гэта вельмі, вельмі крута функцыя, круты інструмент, таму што гэта новае. Так што ёсць усе новы магутны тэхналогіі ўключаны ў адзін структура, якая дапаможа вам справіцца з ўсякія дзіўныя рэчы. Але тое, што з'яўляецца асновай? Так рамкі ў асноўным тое, што стварае - пры запуску вэб-сайта, калі вы пачалі з нуля, як вы адкрываеце GEdit там, і вы хочаце, каб закадаваць усё вашага HTML, і код ўсіх вашых PHP, усе вашы CSS, усё з нуля - вось толькі будзе шмат працы. І база літаральна дае палова сайце зроблена ўжо. Такім чынам, вы пачынаеце з паловай сайце што ёсць усе там для вас. Як і злучэнняў з базай дадзеных, і ўсё віды рэчаў, якія вам не прыйдзецца турбавацца о, калі вы робіце яго з нуля, Вы не павінны хвалявацца пра тых, больш падрабязна нізкім узроўні. Але сёння мы збіраемся экспартаваць адзін з вэб-сайты, што першакурснік з клас 2017, верагодна, знаёмыя. Так што гэта вэб-сайт вэб-сайт, што я зрабіў для нашага класа на працягу лета. Гэта быў сайт, дзе студэнты клас 2017 можа ўвайсці і ўзаемадзейнічаюць адзін з адным. І то гэта карта - усё, дзе людзі. І ў нас быў кніжны гульня, песні гульню дзе мы бачылі песні людзей і кнігі народныя. Тое, што яны любяць чытаць, тое, што яны любяць слухаць. І самае цікавае частка яго , Што літаральна ўзяў мяне 3:00 кадзіраваць ўсё гэта. Таму што, калі я павінен быў зрабіць усё, што ад драпіна, як адкрыццё Gedit, гэта , Верагодна, прынялі мне 20, 30 гадзін. Але з Рубінам на Rails, паколькі усё было ўжо створана для мяне, ён толькі ўзяў мяне тры ці 04:00, ці нешта ў гэтым родзе. Так што ж такое Рубін на рэйкі. Рубін на рэйкі, зноў, як мы ўжо сказаў, з'яўляецца рамачным. Гэта карціна рамак. Такім чынам, вы будзеце губляць дом, у вас ужо ёсць палову Дом зроблена. Гэта аснова. І Рубін на рэйкі з'яўляецца менавіта так. І вы павінны думаць пра гэта як, вы пачынаеце сайт, вы пачынаеце свой вэб Дадатак, у нас ужо ёсць палова яго зроблена там. Але ў першую чаргу, тое, што Сячы? Рубін на рэйкі выкарыстоўвае выгляду мадэлі кантролер, які з'яўляецца парадыгма, які з'яўляецца сапраўды цікава - і ўсё прыкладанні ў цяперашні час выкарыстоўваць нешта накшталт гэтага. Гэтая ідэя падзелу рэчы ў тры часткі, мадэль, выгляд, і кантролер. Мы збіраемся пагаварыць трохі пра гэта крыху пазней. Па-першае, што такое Рубі? Так што гэта Рубі. І гэта з'яўляецца сімвалам мова называецца Рубі. Рубін з'яўляецца адным з даволі новы інтэрпрэтаваных мовы, так скрыпт. Гэта мову, які не кампілюецца як С. Гэта складзены ў бегах. Так што добра, таму што, як PHP, напрыклад таксама інтэрпрэтуецца, з'яўляецца не збіраюцца. Гэта добра, таму што яго партатыўным. Такім чынам, вы проста перадаць свой код ад адной машыны на іншую. З машыны Linux, да АС Windows машына, да машыны Mac або Apple, або нешта ў гэтым родзе. І вам не трэба турбавацца аб падрабязнасці адносна кожнага з канкрэтных аперацыйныя сістэмы. Гэта будзе працаваць усюды. І Рубі з'яўляецца мовай, які - вы, хлопцы, магчыма, памятаюць яе. Людзі выкарыстоўваюць хэш-функцыі рэалізаваны у С для хэш-табліцы на мінулым тыдні і былі ўсе віды памылак сегментацыі. І тады ўсё клапоцячыся пра тое, што радок я там, радок я тут, на самай справе быў ніжні рэгістр або Прапісная або такога роду неспакой больш падрабязна нізкім узроўні. Ну ў Ruby, калі вы хочаце рэалізаваць хэш-табліцу, гэта дакладна, як вы стварыць хэш-табліцу. Вы кажаце, слоўнік, гэтае імя маёй зменнай, = "Hash.new". А потым слоўнік ["Foo"], і, калі я дадаўшы Foo да майго хэш-табліцы, я проста кажу Foo ёсць. І потым, калі я хацеў праверыць, калі Фу быў там, я проста кажу, калі слоўнік ["Foo"] == дакладна вяртанне праўда. Вау, вось і ваш хэш-табліцы. Гэта рэалізацыя з хэш-табліцы ў Ruby. Так што ўсё шкада, што яны маглі б мець выкарыстоўваецца нешта накшталт Рубі за апошнія PSET тыдні, ці не так? У нас ёсць усе віды прычын, каб хочуць выкарыстоўваць мову, як Ruby. Лал мае каштоўныя камяні. Джэм гэтае імя для свайго роду бібліятэкі ў Ruby. Так што ўсе віды цікавых асаблівасцяў што вы можаце мець, напрыклад, калі хочаце інтэграваць маю заяву. Гэта Гарвардскі 2017 прыкладанняў была інтэграваная ў Facebook. Такім чынам, можна ўвайсці праз Facebook, у дадатак. Так што калі вы збіраецеся гэта зрабіць, вы не трэба турбавацца аб адпраўцы некаторых HTTP запыт на Facebook, і чакае для адказу, і прымусіць адказ, і бла, бла, бла. Вы проста спампаваць каштоўны камень, які робіць усё, што для вас. І тады вам не трэба турбавацца пра ўсё гэта. А потым шмат дапамогі онлайн, вядома. Ёсць шмат, шмат, шмат сайтаў, якія збіраюцца, каб дапамагчы вам як з Сячы і з Rails. І гэта вельмі весела ў кодзе. Менавіта таму, што вы можаце не турбавацца аб тых не так весела праблем. Як быццам нешта ў ніжнім рэгістры або у верхнім рэгістры, а затым чаму гэта даючы вам памылку сегментацыі, і вы сапраўды можаце акунуцца ў вельмі цікавы матэрыял. Каб паглыбіцца ў сапраўды цікавых праблем. Так Рубі гэтак жа, як у С у сэнсе. Так што гэта не будзе, што вялікая скачка на самай справе. Так ставіць, вось наша дадатак друку ў Ruby. Я думаю, што вы маглі б выкарыстоўваць друк таксама але ставіць тое, што кожны выкарыстоўвае. Так проста ставіць "Hello World". Вы маглі б, ці вы не маглі, маюць дужка акружэння "Hello World" там. Вы можаце проста выбраць, ці будзе ці не выкарыстоўваць гэта. І тое х = "1". У той час як цыкл выглядае даволі тое ж самае. Гэта проста ёсць менш сінтаксіс. Гэта свайго роду чысцей няшмат. І потым, калі х> 25 ставіць "Вялікі!" і яшчэ ставіць "Маленькі ...". І гэта збольшага C у гэтым сэнсе. Так што калі вы паглядзіце на гэта, вы можаце падыход, верагодна, разумеюць ўсё, што адбываецца. Але гэта больш магутным. Больш магутны, таму што, больш за тое, Ён можа рабіць усё не так - нейкая Hackage няшмат. У C вы не змаглі зрабіць у проста зрабіць з адной лініяй. Напрыклад, ставіць "Я # {х}". Гэта толькі сінтаксіс змясціць значэнне з х тут, і ня друкуе характар ​​х. У C вы павінны былі зрабіць адсотка д, і затым паставіць зменную х пасля таго, як коска тут, ці нешта ў гэтым родзе. І ў Рубіне ёсць скарачэнне для проста раблю гэта. І ставіць гэта, калі х> 3, так што вы можаце пакласці, калі ўсё ў адным радку. А потым спіс. Спісы ў C, як масіў, вы павінны адсочваць, наколькі вялікая ваша масіў або у адваротным выпадку вы атрымаеце сегментацыю абвінаваціць. Ваш масіў толькі адзін тып. Так што гэта альбо масіў зарада або масіў лікаў. У гэтым выпадку, я стварыў спіс тут, вось масіў, які мае першы элемент з'яўляецца радком, Джон, а затым чатыры, два - тыя, цэлыя. А потым я проста дадаць, спіс, Левай кутняй дужкі, злева Кут Кранштэйн, тры. Гэта азначае, што проста дадаць нешта ў мой спіс. Так што гэта свайго роду больш цікава, таму што калі б вы хацелі, каб выкарыстоўваць гэта ў якасці просты спіс цэлых лікаў, Вы маглі, цалкам. Гэта зусім нармальна. Проста змесціце цэлыя там. Але калі вы хочаце, каб зрабіць тое, што больш пераканаўчым, што ёсць і іншыя рэчы, якія ёсць - Я не ведаю,, усякія спісы ў там, або іншыя аб'екты, якія з'яўляюцца больш Цікава, вы можаце цалкам зрабіць гэта. Гэта зусім нармальна. І потым, калі вы хочаце, каб перабору спіс, вы можаце выкарыстоўваць больш C-иш такі падыход. Гэта цыкл, вы ініцыяваць зменная, г = "1", або I = "0". А потым вы ідзяце, і ітэрацыі, і атрымаць усе элементы. Але вы таксама можаце выкарыстоўваць яе больш Рубі-як падыход. Гэта так жа, як list.each. Вось толькі кажуць, вярнуць мяне ўсе элементы спісу. І зрабіць з кожным элементам, называць іх элем. Так што гэта проста назва, што я даючы да кожнага элементу. І зараз гэта будзе паўтарыць для ўсіх элементы і элем, ён збіраецца быць так, што мы атрымліваем доступ што адзін элемент. Такім чынам, можна цалкам прытрымлівацца З падыходам, але гэта таксама працуе. І гэта роўна тое ж самае, ў парадку. І акрамя гэтага, гэта сапраўды, сапраўды лёгка інтэграваць Сячы і HTML так вы, хлопцы зацікаўлены ў вэб-прыкладаннях. HTML, безумоўна, тое, што вы збіраецеся выкарыстоўваць шмат. А вось калі вы хацелі, каб пакласці Рубін у HTML, проста пачаць тут, <%. Гэта азначае, што, вось Рубін пачынаецца. А потым%>, накшталт як PHP ў гэтым сэнсе. Тут Рубін заканчваецца, а затым вы можаце проста пакласці ваш, калі тут. А потым у мяне ёсць некаторыя зменную user.logged_in. У Ruby мы звычайна дадаць тых, альбо пытальнік або клічнік марка, як і банкаўскі характару, проста выгляду адрозніваць нашых функцый. Але вы проста пакласці, што для вашага ж даброты. Гэта не тое, што змены што-небудзь у функцыянальнасці. Так што проста, каб нагадаць мне, што гэта Функцыя - і функцыі ў Ruby, , А ня C, як я ўжо сказаў, яны не маюць патрэбы ў дужкі. Так што наведванне рэчы, гэта функцыя, гэта метад. Але вы відавочна не трэба паставіць дужкі там. Так проста пытаюся калі карыстацкі ўвайшлі ў сістэму, і калі карыстацкі ўвайшлі ў сістэму, цяпер HTML пачынаецца зноў. Так Сардэчна запрашаем, і тут Я надрукаваць user.name. І гэта ўсё. Так што гэта даволі прама наперад, як інтэграваць Рубі з HTML. І рэсурсы, як я ўжо сказаў, ёсць ўсякія рэсурсаў для Рубі. Вы, хлопцы, усё гэта можа выглядаць гэта да пасля таму што і відэа, і слайды, збіраюцца быць даступныя ў Інтэрнэце. А цяпер давайце пяройдзем да Rails. Рэйкі ёсць любоў. Рэйкі - так Рубін яго мову. ОК, як PHP, гэтак жа, як Python. Гэта мова высокага ўзроўню, а не як С. C у сярэдні, нізкаўзроўневы мову ў адчуванне, што Сячы вы не павінны турбавацца аб пераразмеркаванні памяці, і паказальнікі, і тыя віды рэчаў. Але Rails гэта праграма, якая была напісана ў Ruby. І ён выкарыстоўвае Рубі, для таго, каб гэта рамкі, для вас, каб быць у стане пабудаваць дзіўныя вэб-прыкладанняў. Такім чынам, вы павінны спачатку ўсталяваць Рубін на ваша машына, але большасць машын ўжо ёсць, што. А потым ўсталяваць рэйкі па-над ім. Мы збіраемся пагаварыць пра гэта пазней. І чаму Rails? Так MVC, гэта кантролер выгляд мадэлі мы казалі пра крыху трохі, робіць усё прасцей, таму што ён дзеліць рэчы, якія канцэптуальна адрозніваецца ў розныя часткі вашага прыкладання. Чым менш часу траціцца на праблемах нізкага ўзроўню, зноў, і вельмі, вельмі папулярныя зараз. Так што для ўсіх тых, хто зацікаўлены ў запуск сцэны, або ў чымсьці як пачаць бізнэс, і людзі на рынку тэхналогій, якія з'яўляюцца пачаць свой уласны бізнес прама зараз сапраўды, на самай справе прыхільнікі Рубі на Рэйкі, таму што гэта так хутка. Такім чынам, вы можаце атрымаць што-то і працуе менш чым за дзень, і гэта сапраўды вельмі пераканаўчыя Аргумент выкарыстоўваць Ruby. І Rails 4.0 - гэта вельмі прама з печы цяпер. Так Rails 4.0 - Я думаю, што першы выпуск быў у сакавіку гэтага года. І гэта вельмі прыемна, ён мае ўсе віды новых, цікавых функцый. Так Рубін на рэйкі з'яўляецца рамачным, што гэта пастаянна абнаўляецца, каб усе новай тэхналогіі. У першы раз я спрабаваў выкарыстаць Рубін на Рэйкі, я павінен быў гэтую непрыемнасць, таму што я стварыў свой першы вэб-дадатак, і гэта выглядала менавіта так. Так ён стварае ўсе гэтыя файлы для Вы, і я паняцця не меў, што такое - што гэта? Ён стварыў усе гэтыя файлы, і толькі я хацеў стварыць простую праграму, проста HTML сайт. І я нават не мог нічога рабіць. Так што я быў крыху ашаломлены. Але гэта адна з рэчаў, якія, як толькі вы разумею, настолькі становіцца ўсё нашмат больш ясна. Так што не быць перагружаны першым Выгляд, што вы ствараеце ў першую чаргу. Так што ж адбываецца стварае Rails усе гэтыя файлы. Так адзін з, што з'яўляецца док, дакументацыя. Дб, што гэта звязана з базай дадзеных. Lib, які бібліятэкі ўвайсці ў сістэму. Грамадская, сцэнар, і некаторыя рэчы. У значнай ступені ўсё вы збіраецеся хвалявацца аб гэта тэчка дадатак, там. Гэта тэчка, якая змяшчае ваша прыкладанне. Усе астатнія файлы - некаторыя з іх важныя, а ты даведаецеся пра гэта пазней. Але яны проста тут, каб ўтрымліваюць рамкі. Такім чынам, першы краевугольным каменем дома вы, хлопцы будуюць, добра? Але татка дадатак - вось сапраўды важным. І папка прыкладанне мае актывы. Актывы ў значнай ступені ўсё што ідзе. Выявы напрыклад, усё гэта статычнае, што збіраецца быць загружаны на ваш сайт. Таму выявы, JavaScript, CSS - тыя віды рэчаў з'яўляюцца актывамі. Кантралёры - мы збіраемся больш пагаварыць пра Што ўяўляюць сабой кантралёры, мадэлі, і палі ў секунду. І памочнікі з'яўляюцца функцыямі, якія вы можна выкарыстоўваць ва ўсім кодзе каб дапамагчы вам зрабіць што-то. Такія функцыі, як ўвайшлі ў сістэму, для прыклад - user.loggedin. Гэта функцыя, якая, верагодна, вы павінны выкарыстоўваць ва ўсіх частках вашага Дадатак. Такім чынам, вы можаце змясціць нешта накшталт што ў вашым памочніка. Канверты - вось калі вы збіраецеся адправіць ліст для карыстальнікаў, вы хочаце выкарыстоўваць паштовую праграму. І мадэлі і ўяўленні, мы збіраемся казаць пра гэта прама цяпер. Такім чынам, кантролер прадстаўлення мадэлі, гэта асноўны краевугольны камень Рубін на Рэйкі, і большасць структур у цяперашні час, каб быць сумленным. Такім чынам, яшчэ раз, мы адлучаецца увесь наш код ў трох розных частак. Мадэль - мадэль у асноўным базы дадзеных. Ён апрацоўвае рэчы ў базе дадзеных. Такім чынам, кожны табліцы ў базе дадзеных мае адпаведны файл у мадэлі. Так што гэта свайго роду стол для карыстальнікаў. Дык вы захоўваеце інфармацыю, як імя карыстальніка, іх лісты, іх адрас, іх пароль, і таму падобнае. Вы будзеце мець адзін файл у мадэль выкліканы карыстальнік RB - RB для Ruby. І там вы будзеце мець усе метадаў і зменных. Зменныя збіраецеся адпавядаюць з імем карыстальніка, электронную пошту, і ўсё. І вы будзеце мець метады. Гэта будзе нешта ў стаўленні - вы збіраецеся апрацоўваць гэтую інфармацыю ў базе дадзеных. Каб стварыць мадэль з Rails, вы проста карыстаецеся Rails генераваць. І ствараць рэчы ў Rails, вам на самай справе трэба тэрмінал. Так што гэта вельмі тэрмінал абгрунтаваных рамак. Вы проста ўвайсці ў тэрмінал, і ня рэйкі, генераваць мадэль. І імя гэтай мадэлі з'яўляецца карыстальнік. І я проста хачу мець дзве зменныя, дзве калонкі, у маім стале. Так вось па электроннай пошце. Электронная пошта з'яўляецца тып радка. Пароль, пароль таксама тып радок. Гэта адзіныя дзве рэчы. Гэта свайго роду спрошчанай табліцы карыстальнікаў. Але вы маглі б цалкам паставіць сотню рэч там, калі вы хацелі. І рэйкі таксама робіць яго вельмі, вельмі проста, каб усе віды адносін базы дадзеных. Так звычайна, калі ў вас ёсць табліцы ў вашым У базе, яны не вельмі-то незалежныя адзін ад аднаго. Давайце падумаем аб. Вы хочаце, каб купляць і прадаваць прадукты онлайн. Такім чынам, у вас ёсць сайт, дзе вы хочаце купляць і прадаваць тавары. Такім чынам, кожны карыстальнік мае шмат прадуктаў, якія гэты карыстальнік гатовы прадаць. І кожны карыстальнік таксама мае шмат здзелак што працягваюцца, або нешта ў гэтым родзе. І здзелкі з іншым карыстальнікам. Кожная транзакцыя належыць да двух розных карыстальнікам. Карыстальнік, які купляе і карыстальнік, які прадае. Такім чынам, гэта так званы адносіны базы дадзеных. І тут у нас ёсць менавіта тыя ключавыя словы, мае шмат і належыць. Такія найбольш важныя з іх. І вы толькі збіраецеся сказаць, для Напрыклад, гэта прыклад таго, мадэль ў 2017 вэб-сайце Гарвардскага універсітэта. Зноў жа, студэнты ў тут - кожны студэнт на сайце, студэнт з'яўляецца мадэль, уяўляе сабой табліцу базы дадзеных. Кожны студэнт павінен быў шмат кніг, таму што вам мог сказаць, што вашы любімыя кнігі, правільна. Так кожная кніга належыць студэнт тут. І атрыбут даступны - вось толькі кажуць, тых, з'яўляюцца зменнымі. Такія зменныя даступныя ад гэтай мадэлі. І зменныя аўтар кніга, апісанне, жанр, і назва кнігі. Так што проста інфармацыя адносна кнігу. А вось у мяне ёсць метад, які проста сартуе ўсё. Так вызначыць і сканчаецца, вось толькі кажучы, вось ідзе мой метад. Self.sorted_all. Вось толькі, дай мне ўсё сартуецца, і гэта, як вы рэалізуеце алгарытм сартавання, якія даволі лёгка. Але ў прынцыпе, гэта, як Мадэль выглядае, ОК. Хто-небудзь ёсць пытанні, якія тычацца гэтая база дадзеных рэч? Адносіны? Гэта ясна? Так. АЎДЫТОРЫЯ: Ці можаце вы зрабіць алгарытм сартавання? GABRIEL GUIMARAES: алгарытм сартавання, ОК. Калі вы абвыкнеце да сінтаксісу Ruby, гэта будзе ясна. Але ў прынцыпе, elems з'яўляецца Book.all. Так кніга гэта імя маёй мадэлі. Пры стварэнні мадэлі, яна пастаўляецца з ўсякія добрых метадаў для вас. Так dot.all гэта метад, які вяртае ўсе кнігі. Але знайсці, напрыклад, будзе шукаць адна кніга і вярнуць гэтую кнігу, або нешта ў гэтым родзе. І так elems гэта ўсё. І я проста кажу elems.sort. Сартаваць убудаваны ў Рубіне функцыя. І, зрабіць AB. Так што гэта сапраўды зноў - вы збіраецеся сартаваць. Але вы збіраецеся атрымаць гэты аргумент для мяне. І аргумент выкарыстоўвае - гэта адзін з больш цвёрдыя рэчы ў Рубі на самай справе, гэта зрабіць рэч. Але як толькі вы разумееце гэта ўсё прыходзіць вельмі, вельмі інтуітыўным. Такім чынам, AB, гэта кажа месца трымальнікі, якія я збіраюся выкарыстоўваць - як зменныя я збіраюся выкарыстоўваць, з'яўляюцца будзе называцца і б. І тыя кнігі. Дык з-за роду неабходна параўнаць элементы, памятаеце, што? Такім чынам, калі вы разбярыцеся, вас параўнаць два элемента. Я збіраюся сказаць, што кожны раз, калі вы збіраецеся параўноўваць - так што гэта, я перадаю сартаваць аргумент. І аргумент ўсе ад рабіць, каб і тут, добра? І гэты аргумент, проста кажа накшталт як параўноўваць. Сартаваць б працаваць тут, але гэта параўнаў бы з іх па змаўчанні ў параўнанні алгарытм. Я хачу, каб параўнаць ў вельмі спецыфічная спосаб, а менавіта, калі кніга была створана, калі кожны Кніга была створана. Таму я кажу, што, скажам, імя першым Кніга ўяўляе сабой і назва Другая кніга, як б, я хачу роду для сартавання нешта на аснове b.created_at гэта дзіўна сімвал, a.created_at. І, што дзіўна сімвал з'яўляецца скарачэннем бо, калі адзін больш, чым сябра, вярнуць 1. Калі адзін роўна іншы, то вяртаецца нуль. Калі адзін менш, чым іншы, вяртанне мінус 1. Дык вось што, што дзіўна знак. Але гэта не важна. Я маю на ўвазе, тое, што я хачу, каб вы, хлопцы, каб атрымаць цяпер з'яўляецца ідэя, што база дадзеных - вы можаце мець мадэль ёсць. Так што вам не прыйдзецца турбавацца аб падключэнні і выкарыстанні SQL заяву, і таму падобнае. Ён таксама можа ствараць дзверы Ін'екцыі SQL і ўсё роду праблемы бяспекі. У гэтым выпадку, вы не турбавацца пра гэта. Вы проста выкарыстоўваць такія метады, як book.all. І, што на фоне вядома, збіраецца ў базу дадзеных, і гэта збіраецеся выкарыстоўваць заяву SQL каб атрымаць усе кнігі. Але вы не павінны турбавацца пра гэта. Гэта вынас, добра? І калі ў вас ёсць belongs_to аб як гэта, гэта азначае, што калі ў вас ёсць аб'ект кнігу, вы можа бачыць тое, што з'яўляецца яго вучнем. Такім чынам, якія студэнт мае гэтую кнігу? Такім чынам, мы можам проста выкарыстоўваць book.student, і што дае тое, што студэнт з'яўляецца. І гэта сапраўды асаблівасць, каб мець. Добра, зараз выгляд. Такім чынам, мадэль з'яўляецца тое, што ўзаемадзейнічае з базай дадзеных, ці не так? Выгляд асноўным HTML, і CSS, а некаторыя JavaScript. І гэта тое, што карыстальнік на самай справе бачыць. Карыстальнік не збіраецца см. базу дадзеных. Ён збіраецца паглядзець некаторыя дадзеныя з У базе убудаваных у гледача. Рубін на рэйкі робіць яго сапраўды проста зрабіць поля. Па-першае, таму што гэта ўжо стварае яго для вас, з скрынкі, макет. Макет ў асноўным тое, што - калі ўсе вашы старонкі маюць лагатып на верхняй і, я не ведаю,, некаторыя меню або нешта накшталт гэтага, што ўсе вашы старонкі Доля ў агульным, то вы не трэба стварыць шмат, шмат, шмат HTML файлы, дзе ўсе файлы маюць, што жа HTML код. Я маю на ўвазе, што гэта глупства, таму што ты проста паўтараючы код паміж рознымі файламі. Гэта вызначана не добры падыход. Так Рубін на рэйкі стварае гэты макет для вас. І гэта проста кажу, усе мае старонкі будзем мець гэты HTML, гэтую галаву Назва тут, і тыя стыляў спасылка тэг. Падключыце тут усё сваё CSS. Падключыце тут усё сваё наяўнасць і некаторыя мета-тэгі. Вось толькі тое, што яны зрабіць аўтаматычна. А потым, у канчатковым галаву, цяпер тут пачынаецца цела. І цяпер гэта мой фактычнае змест. Так што, калі я хацеў, каб пакласці што-то падобнае, Меню тут, я б паставіў яго прама над гэта месца, ці нешта накшталт гэтага, так што ўсе мае старонак падзяліўся ёю. Такім чынам, схема з'яўляецца агульным на ўсіх старонках. Цяпер, калі выхад тут толькі кажа, няма Незалежна ад таго на якія старонкі Гэта ў, проста падключыць ў змесце, што старонка тут, добра? А цяпер гэта, напрыклад, Ўтрыманне адной старонцы, што будзе падлучаны да гэтай даходнасці заяве аўтаматычна Rails. Але гэта макет падзяліўся на ўсіх старонках. І гэта з'яўляецца прыкладам адной старонцы. І гэта менавіта старонка , У якім пералічаныя ўсе кнігі. Так што гэта з'яўляецца адным з асноўных табліцы HTML наверсе. Так аб'яўленні кнігі, назва, аўтар, апісанне, жанр. І вось мы выкарыстоўваем, зноў жа, некаторыя Сінтаксіс Рубі, @ books.each-- @ Рода кажа, што ў зменнай з'яўляецца глабальнай, у пэўным сэнсе. Таму што гэтая пераменная было на самай справе заявіў у кантролер, які Вы будзеце бачыць прама цяпер. Але проста прыняць на веру, што гэта @ Кнігі гэта зменная, якая ўяўляе сабой спіс усе кнігі. Так books.each, рабіць, і зноў жа, гэта проста кажу, як вы хочаце назваць кожны з итераторов так, што мы не прыйдзецца турбавацца аб чатырох, Int я бла, бла, бла. Мы проста бярэм кожны з элементы і выкарыстоўваць іх. Так што гэта кніга, а затым проста раздрукаваць тут. book.title, book.author, book.description, і бла, бла, бла. А вось link_to. Так link_to проста тэг спасылка што карыстальнік можа націснуць на і ідзе на іншы сайт. Link_to, паказаць, што іншую кнігу. Так, калі карыстальнік вельмі зацікаўлена ў гэтая кніга, то ён можа проста націснуць на шоў. Або націсніце на рэдагаванне, калі ён хоча рэдагаваць кнігу. Або знішчыць, калі ён хоча выдаліць кніга з базы дадзеных. ОК, ці значыць гэта мае сэнс? Добра. Нарэшце, кантролер. Таму ў асноўным кантролер Інтэрфейс паміж мадэль і выгляд. Такім чынам, мадэль з'яўляецца часткай вашай Код, які мае базу дадзеных - кожная табліца ў базе дадзеных мае адпаведны файл у мадэль, і так далей. І як мадэль і выгляд ўзаемадзейнічаць? Такім чынам, праз кантролер. Які кантролер робіць гэта мадэль для нешта накшталт, напрыклад, змясціць усе кнігі ўнутры зменнай. Як гэты, @ кніг. І яна павінна быць глабальнай з гэтым на рэчы, таму што гэта будзе доступ прадстаўленні. Гэта не будзе выкарыстоўвацца на працягу сам кантролер. І гэта як раз запавольвае інфармацыю, якая выгляд збіраецца выкарыстоўваць. Напрыклад, кантролер правярае калі карыстальнік знаходзіцца ў сетцы. І як гэта зрабіць? Гэта на самай справе просіць мадэль таму, што мадэль мае Інфармацыя пра карыстальніка. Ён мае табліцу карыстальнікаў, кніг стол, іншыя табліцы. Такім чынам, кантролер пытаецца, карыстальнік знаходзіцца ў сетцы. Калі карыстальнік знаходзіцца ў сетцы, кантролер апрацоўвае такія рэчы, як пакласці печыва, ці нешта ў гэтым родзе, каб паставіць пячатку сказаць, што карыстальнік знаходзіцца ў сетцы. Няма неабходнасці зноў увайсці ў сістэму. І ён збіраецца загрузіць зменную Карыстальнік, напрыклад, што Ўяўленне можа выкарыстаць. І выгляд можа пакласці што-то тут, напрыклад, вітаць user.name. Так ён збіраецца сказаць, дабро запрашаем Джон, дабро запрашаем Джэймс - нешта накшталт гэтага, ці не так? Так што ўсе гэтыя зменныя выкарыстоўваюцца ў выгляд будуць загружаныя ў кантролер і будуць пад'ехаў з мадэлі. Гэта прыклад кантролера. Таму ў нас ёсць, у асноўным, кожны - мы называем гэтыя рэчы дзеянні. Так індэкс дзеянне. Гэта функцыя Рубі. Гэта метад Рубі там. Але для званкоў кантролера Тыя рэчы, дзеянні. І кожнае дзеянне звязана з маршруту. Дык вось гэты маршрут, напрыклад, з'яўляецца атрымання справаздачы / кнігі. Так што, калі вы ідзяце ў harvard2017.com/books, што адбудзецца гэта код будзе называцца. І ёсць файл - дазвольце мне адкрыць гэты сапраўды хутка. Там у файл з імем файл зыходных. Гэта не адкрыццё. Такім чынам, ёсць файл з імем файл зыходных , Што ў асноўным адпавядае - О, цяпер ён адчыняецца. Тут маршруты. Таму ў асноўным адпавядае напружанне, Актывацыя / новы напрыклад, нешта ў кантролеры. Так што гэты кантролер называецца кантролер актывацыі, але тут, мы маем кнігі, напрыклад. Так матчаў - кнігі / новы, з кантролерам кнігі, дзеянне новы. Так у асноўным, вельмі простая рэчы. І вось, калі вы павінны былі атрымаць / кнігі, слэш ідэнтыфікатар кніг, слэш новы, Вы ідзяце да таго, што Метад там Рубі. Дык вось, тое, што гэты паказчык робіць толькі загрузка часопіс. Гэта тое, што - Я увайсці ўсе кнігі ў часопісе. І ўладзіць усё гэта. Так што гэта збіраецца вярнуцца усе спарадкаваныя кнігі. Гэта, зноў жа, у базе дадзеных. Такім чынам, гэта метад мадэлі. Вы бачылі гэты метад з'яўляецца створаны ў мадэлі. Зараз гэта проста загрузіўшы ўсе кнігі і пакласці, што ў зменнай, можна ўбачыць, прадстаўлення. Таму што вы не можаце, у сярэдзіне Ваш HTML код, вы не можаце патэлефанаваць нешта непасрэдна з мадэлі, таму што па дзвюх прычынах. Па-першае, па меркаваннях бяспекі, так як гэта не зусім цікава быць загрузцы інфармацыі непасрэдна ўнутры кожны HTML гэта ў базе дадзеных. А па-другое, каб захаваць ваш Код сапраўды арганізаваны. Так аддзяліць дакладна розныя часткі. Так BookLog.sorted_all, гэта ў базы дадзеных і гэта будзе ўведзена ў пераменная @ кніг. І цяпер гэтая пераменная даступная ў межах вашага HTML кода. Такім чынам, вы можаце проста пакласці ўсе кнігі там так жа, як мы зрабілі, прама тут. Гэта зменнай. І візіты respond_to зрабіць | Фармат |, гэта ўсяго толькі свайго роду сінтаксісу Ruby, для калі карыстальнік просіць мяне для HTML код, я збіраюся адказаць HTML кода. Калі карыстальнік пытаецца мяне з JSON кода, якая з'яўляецца тое, што з дапамогай вэб-прыкладанні мець зносіны паміж сабой, яны звычайна выкарыстоўваюць JSON або якой-небудзь іншай Такія рэчы. Так што проста адказвае, выкарыстоўваючы тыя два розных фарматах. Але для звычайнага карыстальніка, гэта ня трэба было б быць тут. Вы б проста адказаць HTML, і гэта нармальна. Так што не вельмі занепакоеныя тым, што шмат пра гэта. Гэта адзіны радок кода ў нашым кантроль, як гэта загрузцы з HTML У базе, укладваючы ў чымсьці, што даступнай прадстаўленні. А потым новы, таму тут Я ствараю кнігі. Але для стварэння кніг, мне трэба студэнту таму што мне трэба ведаць студэнту чые кнігі гэта належыць, прама. Так @ студэнцкай = Студэнт. Студэнт, зноў жа, мы пачынаем з вялікі S з'яўляецца ўзорным студэнтам. ОК, так што гэта мадэль студэнта, гэта часопіс мадэль кніга. Student.find, так што я збіраюся знайсці студэнт, выкарыстоўваючы параметры ID. params.id, гэта проста зразумейце мяне значэнне гэтага ID, які быў перададзены - і URL. Проста збіраюся шукаць гэтага студэнта. І ў першую, мы збіраемся праверыць калі студэнт мае некаторыя песні і бла, бла, бла. І гэта ўжо апрацоўвае выпадак, калі студэнт не існуе, напрыклад. А потым, яшчэ, мы проста рэагаваць да таго ж з выкарыстаннем HTML. І тады мы можам дазволіць карыстальніку ствараць свае песні. Так што гэта новае. Новы звычайна выкарыстоўваецца для, хай карыстачу ствараць нешта. А тут яшчэ стварыць дзеянне , Які звычайна выкарыстоўваецца для - фактычна паклаў песні ў базе дадзеных ці нешта ў гэтым родзе. Але як толькі вы пачынаеце выкарыстоўваць Rails, гэтыя рэчы будуць многае, многае іншае зразумела. ОК, астудзіць. Любыя пытанні да гэтага часу? Ці мае гэта мае сэнс з кантролерамі, мадэлі, палі - так? Зноў у вашым Rails прыкладання - так што ўсё, што можна знайсці ў тут. Так у вас ёсць прыкладанне, кантралёры, тых, ўсе з маіх кантролераў. Так, напрыклад, кнігі кантраляваць. Гэта той, які мы толькі што бачылі. А потым праглядаў. І кожны кантролер мае звязанае ўяўленне, ці не так? Так аўтаматычна пры выкліку гэтага Індэкс тут, напрыклад, ці калі вы называюць гэта кнігі новага, то меркаванне, кнігі, новая збіраецца назваць. Так Rails робіць усё аўтаматычна. Такім чынам, кожны кантролер мае звязаны з ім праглядаць і ўсе мадэлі - тут у мяне ёсць адзін, два, тры, чатыры, пяць мадэляў. Але гэта ўзорным студэнтам, так што тыя, зменныя, якія ўсё студэнты маюць - лакалізацыю, дата нараджэння. Студэнты трохі больш ўскладняецца тым, што ў кожнага студэнта ёсць больш іншы метад ў сціснутым выглядзе. Але гэта ўсяго толькі апрацоўка Табліца, меў усе студэнты ў базе дадзеных. І, добра, ўсталёўцы Rails. Ўстаноўка Rails, шчыра кажучы, не самая простая рэч. Але як толькі вы сканчаеце ўсё, гэта вельмі, вельмі лёгка. Так ўсталёўцы Rails, вы проста ідзяце ў сайт, rubyandrails.org / спампаваць і прытрымлівацца іх ўказанням там. Спампаваць усе. І вы можаце зрабіць гэта альбо ў Appliance, у CS50 Appliance, на Вокны, на Mac, або любой аперацыйнай Сістэма па вашаму выбару. Рубін на рэйкі працуе на ўсё. Напэўна вы ўжо ўсталявалі Рубін калі ў вас ёсць Mac або - ў гэтых сродках я думаю Рубін - Я не ўпэўнены. А потым вы проста мець гэтую праграму. І калі вы хочаце стварыць новы вэб-дадатак, вы проста зрабіць Rails, новы, блог. Рэйкі, новыя - Я не ведаю, - імя вашага сайта. І гэта так проста. Гэта збіраецца стварыць усе тыя, файлы я толькі што паказаў вам. Але мадэль, выгляд, а таксама Кантролер не будзе населены яшчэ. Ты проста прыйдзецца пайсці туды і запоўніць гэтыя тры тэчкі. Так шанцы, вы хочаце стварыць мадэль, напрыклад, рэалізаваць адзін мадэляваць ў першую чаргу. Такім чынам, яшчэ раз, заўсёды спрабуе ўкусіць менш біты праблемы за адзін раз. А потым скажам, стварыць мадэль для карыстальнікаў. Гэта першае, што калі ў вас ёсць карыстальнікі. Тады я хачу стварыць мадэль гэтак жа, як мы паказалі тут. Рэйкі, генераваць, мадэль, карыстальнік, а затым лісты радок - у нас ёсць, што тут. І проста стварыць гэтую мадэль, так. Рэйкі генераваць мадэль ліст карыстальніка: радок пароль: радок. А потым стварэнні кантролера якая мае справу з карыстальнікам. І вы можаце ствараць новых карыстальнікаў і зрабіць падобныя рэчы. І тады вы можаце пераходзіць да стварэння астатнія старонкі сайта. Крута, пытанні? Так. АЎДЫТОРЫЯ: [неразборліва] GABRIEL GUIMARAES: Так, так, вы пэўна павінны пайсці ў поле зроку. Гэта вельмі добрае пытанне. Такім чынам, пункт гледжання, што на самой справе ўтрымлівае свой HTML. Так што гэта тое, што карыстальнікі пабачым. Зноў жа, тут гэта прыклад выгляду. Ён мае HTML-код і Рубі код адначасова. Таму код Рубі ёсць навесці з базы дадзеных, напрыклад, , Якія былі загружаныя на кантролеры. Так што пераменная @ кніг, напрыклад, мае ўсе кнігі і табліцу кніг у базе дадзеных. Мы пераканаліся, што гэта было ў кантролеры. І выгляд - кожнай з старонак з вашага сайта з'яўляецца будзе мець адзін асацыіраваны выгляд. Так што, калі вы ідзяце на галоўную старонку, вельмі першая старонка, harvard2017.com. Гэта паказвае адну старонку. А потым вы ідзяце скараціць анкету. Гэта збіраецца пайсці да кантролер вось кантролер профіль. І кантролер профіль будзе каб даць вам прадстаўленне профілю. І выгляд профілю будзе выглядаць некалькі, як гэта, але гэта будзе ёсць інфармацыя аб карыстальніку, а не пра кнігах. Так што гэта HTML код і CSS, і тыя, рэчы, якія карыстальнік бачыць з кодам Рубі - што на самой справе друкуе рэчы з базы дадзеных. Гэта больш зразумела? Я спадзяюся. АЎДЫТОРЫЯ: HTML код выкарыстоўваецца для на самай справе зрабіць сайт, які карыстальнік бачыць, але код Рубін тое, што робіць сайт працаваць? GABRIEL GUIMARAES: Код Рубін канверсуецца ў HTML. Так што карыстальнік атрымлівае толькі HTML, ОК? Гэта толькі HTML. Гэта book.title збіраецца пераўтварыць у значэнне book.title ў HTML, ОК. Так што гэта ўсё на сэрвэры, і таму гэта залежыць ад таго, што кнігі там на сэрвэры прама цяпер. Але тое, што сервер будзе неадкладна сэнс толькі HTML код, ОК. Але выгляд проста дае макет што HTML збіраўся выглядаць і тое, што зменныя будуць. Гэты выгляд раздрукаваць, ОК. Гэтыя рэчы ёсць у асноўным друкаваць аўтаў. Яны збіраюцца надрукаваць зменныя, ОК. Так што ж такое толькі HTML, тыя - аўтар, назва, апісанне. Гэта статычны кантэнт. Гэта не зменіцца. Гэта проста HTML код. Такія раздрукоўкі для зменных - рэчы, якія залежаць. Cool, яшчэ пытанні? Добра? Так. Залы: Я думаю, што вы рабілі ўсё рэдагаванне ў іншым тэксце мантаж праграмы. Ці павінны мы так жа спампаваць што? GABRIEL GUIMARAES: Так, мне падабаецца гэта тэкставы рэдактар ​​называецца TextMate. І гэта сапраўды добра. Гэта добра падыходзіць для Ruby. Гэта колеры рэчы вельмі акуратна. Так TextMate, Т-Е-Х-Т. Я збіраюся пакласці, што, трымайся - Я маю на ўвазе, вы можаце выкарыстоўваць Gedit ці ўсё, што заўгодна. Але гэта з'яўляецца спецыфічным для Mac, і гэта сапраўды ахайны, паколькі яна ставіць усё Вашы файлы там. І ў Рубін на рэйкі, неабходна для пераключэння файлы шмат. Так што гэта шмат, шмат файлаў проста перайсці з аднаго файла, перайсці да адзін файл ці іншай. Так TextMate з'яўляецца вельмі добрым, але Ёсць шмат там. Яшчэ пытанні? Добра, так? АЎДЫТОРЫЯ: Ці ёсць мабільны развіццё праз Рубін на рэйкі? GABRIEL GUIMARAES: Я чуў рэчаў. Я не выкарыстоўваў іх. Вы маглі даследаваць больш падрабязна пра гэта. Я не ўпэўнены, ці ёсць добрая рэч там. Добра, так? АЎДЫТОРЫЯ: [неразборліва] GABRIEL Гимарайнш: Ня рэйкі, верагодна, Рубі масіў. Адкрыйце акно тэрмінала і тып, "Рубін". Так, напэўна, і тады вы толькі павінны ўсталяваць Rails. Але калі вы збіраецеся ўсталяваць новы Рэйкі 4,0, які я вельмі рэкамендую, Вы павінны загрузіць Рубін 2.0. Гэта новы таксама. І новыя рэйкі 4.0 ёсць нешта Выдатна, што што і ў дачыненні да актываў. Ён апрацоўвае актываў. Актывы зноў вобразы, CSS файлы, і файлы JavaScript. Так што сапраўды прыемная рэч, што Рубін на Рэйкі ж для вас гэта ўсё з тых CSS файлы, якія вы павінны і ўсё - ён проста звязвае ўсе ўверх у адзін велізарны файл, без прабелаў або што-небудзь, мінімізаваць час карыстальнік павінен спампаваць гэты код з вашага сервера. Таму, калі вы бачыце на вашым кампутары, гэта будзе мець як 15 CSS-файлаў. Або шмат, шмат розных файлаў CSS. Але ў рэшце рэшт, што Рэйкі аўтаматычна робіць для вас гэта ставіць ўсе разам у адзін велізарны файл так, што ён зводзіць да мінімуму час запыту. Гэта сапраўды выдатна. Да? АЎДЫТОРЫЯ: [неразборліва] GABRIEL GUIMARAES: Цалкам дакладна. Так, інтэграцыя Google Maps. Гэта API JavaScript ад Google. Так што я проста пайшоў на сайт Google. У іх ёсць гэтая API і я Google Maps загрузілі код і інтэгравалі яго у поле майго зроку. Так што я павінен быў зрабіць там гэта я павінен быў атрымаць месца з базы дадзеных. Гэта было зроблена ў кантролеры. Так што я пайшоў да кантролер - дзе кантролер. Кантролер выглядала так. Ёсць усе месцах студэнты, пакласці усё гэта ў вялікі зменная, вялікі спіс, што мае ўсе месцы. І з пункту гледжання, таму што JavaScript API нешта ў глядзець, правільна? Паколькі JavaScript выконваецца непасрэдна ў HTML Код, ён збіраецца быць накіраваны кампутар карыстальніка. І з пункту гледжання, я загрузіў усё, што Інфармацыя ў Google API. І ён зрабіў усё, што для мне, што гэта сапраўды крута. Але калі вы хочаце выкарыстоўваць рэчы ў фонавым, і гэта, як бібліятэкі, для прыклад, зноў жа - інтэграцыя з Facebook. Гэта тое, што многія, многія, многія прыкладання выкарыстоўваюць у цяперашні час. Так ёсць свой інтэграцыю з Facebook , Таму што гэта значна прасцей проста ўвайсці з Facebook, чым ствараць рахунку і бла, бла, бла. Тады вы проста карыстаецеся камень, і гэта, як проста, як ісці да вашага жамчужына файла. Джэм файл ўяўляе сабой файл называецца жамчужынай файл у крыніца каталогу вашага Рубін на Рэйкі праект. Проста ідзеце туды і дадаць новы каштоўны камень. А вы паглядзіце яго на Google. Ёсць шмат, шмат, шмат каштоўных камянёў. Там адна, што адмыслова робіць гэта для інтэграцыі Facebook. Я не ўпэўнены, што яму імя. Проста Google гэта, і вы збіраецца знайсці яго. Добра, яшчэ пытанні? Дзіўны, дзякуй, што прыйшлі.