[Speel van musiek] STEPHEN tulband: So ek is Stephen Tulband. Oor aan die kant hier, miskien kan ons kan kry 'n paar mense om te duik in. Ons het Gabriel en Zack. So vir 'n kort draaiboek oor wat dit gaan lyk, Ek gaan om te doen 'n paar uiters hoë-vlak kyk na wat MVC is. Gabe? GABRIEL Guimarães: Ek gaan praat oor Ruby en 'n bietjie hoe relings werk en hoe dit kan help om web-toepassings te bou. ZACK CHAUVIN: En ek gaan wys jou 'n spesifieke voorbeeld van hoe Rails te gebruik om te bou 'n super asemrowende app. STEPHEN tulband: Awesome. Soet. Alle regte. So laat ons praat oor MVC. So laat ons gaan na die volgende skyfie, wat Ek sal doen deur te druk die knoppie. En laat ons gaan na die next-- ontwikkeling, Ek wil om te dink oor gaan na CVS, omdat CVS is 'n winkel en het ook 'n V in die sentrum. En so laat dink aan 'n winkel. En laat ons die winkel net een ding te verkoop. So ons gaan om dit te hê stoor verkoop slegs hierdie rooi koppies. En dink jy loop in, en jy gaan aan die voorkant van die winkel, en die persoon. En sy naam is Vince. En Vince golwe hallo by jou, sê hi. En jy sien een ding oor Vince. So wanneer ons dink oor Vince, ons het sowat twee sleutel adjektiewe te dink. Vince is mooi, maar hy is dom. OK. So jy weet, geen skuld van sy eie, helaas, hy is mooi. Hy is ons siening. So ons eerste cast lid te word is daar. Hou dit in gedagte. Nou vra jy Vince, jy gaan, hey Vince. Ek is 'n kliënt. Hy sê hi. Ek wil regtig een van jou rooi koppies. En wat beteken Vince sê? Is daar iemand enige idee wat Vince sê? Ek gaan koue roep. Wat dink jy Vince sê? GEHOOR: Hy sê, ek kan jou wys waar dit is nie, maar ek kan nie vir jou een gee. STEPHEN tulband: Hy sê, ek kan jou wys waar dit is nie, maar ek kan nie vir jou een gee. Selfs erger. Iemand anders het 'n ander idee wat Vince kan sê? GEHOOR: Hy het tjek te gaan indien hulle enige rooi koppies. STEPHEN tulband: Vince nie eens weet hy het om te gaan. Enigiets anders? So jy sê, moet kyk of hy het rooi koppies. Gaan voort. GEHOOR: Wat is 'n rooi beker? STEPHEN tulband: Wat is 'n rooi beker? Wat is 'n rooi beker? Vince is verward. So Vince gaan praat ons volgende cast lid, Carl. En wanneer ons dink oor Carl, ons gotta dink oor twee groot adjectives-- hy is beheer, maar hy is nie in staat. So Vince goes-- hy gaan, wat is 'n rooi beker? Ek weet nie wat 'n rooi beker is. Hy draai om, en hy vra Carl. Hy sê, Carl, iemand gevra vir 'n rooi koppie. Kan jy dit doen? En wat beteken Carl sê? Kom ons vind dit uit. Het enige iemand enige idee wat Carl sê? En ek sal net herhaal dit terug na jou. Ek het 'n hand beweging. GEHOOR: Hy vertel iemand anders sal die rooi koppies te kry. STEPHEN tulband: Hy vertel iemand anders die rooi koppie te kry. Presies. En ons het 'n idee wat daardie persoon kan wees? Dit is 'n wenk. Dit gaan om te begin met 'n M. Mob? GEHOOR: Model. STEPHEN tulband: Die model, ja. Sy naam is nie-model, ongelukkig, want dit is 'n dom naam. Ons het Mitt. En wanneer ons dink oor Mitt-- nee, dit is nie 'n foto van Zack. Ons het om te dink aan twee sleutel adjektiewe met Mitt. Hy is in staat om, maar hy is onderdanig. So Mitt weet wat hy moet doen, maar hy kan regtig nie doen nie. Of hy kan regtig nie op sy eie besluit. So ons het Carl. Carl skree op Mitt. En hy sê, hey Mitt, moet ons rooi koppies. En Mitt gaan na sy rooi koppie krediteer. Hy gryp 'n koppie, en hy gee dit terug. Het enige iemand enige idee wat gebeur dan? Gee die beker. So ver Mitt het afgeloop na sy rooi beker bewaarplek, geneem om dit uit, nagegaan dit af, het gesê: Ek het 'n rooi koppie. En hy gee dit aan Carl. Jy 'n idee nie? Wat dink jy Carl doen? GEHOOR: Carl gee dit aan Vince. STEPHEN tulband: Carl gee dit aan Vince. Vince. GEHOOR: En Vince toon om dit te [onhoorbaar]. STEPHEN tulband: Presies. So dit is presies dit. So Vince neem die beker, nie eens weet wat dit is, maar hy wys dit vir die gebruiker. So laat ons probeer om te herskep dit werklik kortliks. En ons gaan nodig drie stil vrywilligers, as julle nie gaan in staat wees om te praat. So kon ek gryp drie? OK. En wie sou jy graag wou wees? GEHOOR: Ek sal Vince. STEPHEN tulband: Vince, OK. Mooi, maar dom. Groot. Iemand anders? Ons is op soek na 'n bekwaam maar onderdanig. Enigiemand anders wil in staat wees om? GEHOOR: Ek kan Carl. STEPHEN tulband: Sweet. Ons het Carl. GEHOOR: Mitt. STEPHEN tulband: Mitt, OK. En ons gaan nodig a-- Ek sal die kliënt wees. So kom op, kom op op. En is almal in die lig? So ek gaan Vince te vra om staan ​​in die voorkant, net glimlag, net glimlag so helder as moontlik. En ons gaan Carl vra, reg is, hoekom doen jy nie, soos, staan ​​reg agter haar? En Mitt, waarom doen jy nie net af te gaan in die rug, en dan sal ek gee jou 'n groep koppies uit te hang met. So ek is 'n kliënt. Ek kom. En ek maak [onhoorbaar] Ek sê hi, ek wil graag 'n koppie. Volmaak. So Vince het geen idee nie. So wat beteken Vince volgende doen? Vince-- OK, so ek gaan te wees narrating nou. Vince skree op Carl, koppie! Wat beteken Carl doen? Carl skree op Mitt. Mitt gryp 'n koppie. Mitt dit gee aan Carl. Carl terugkeer om dit te Vince. En Vince wys dit aan die gebruiker. En dit is 'n hoë, hoë, hoog, so hoog blik op MVC. Ons deel dit deur 'n oog, wat sien die gebruiker, 'n kontroleerder, iemand wat alles in die agtergrond maar regtig nie iets kan werk of kan niks van enige belang nie behalwe die roeping van die oog en die model. En dan het ons Mitt, die model, wat updates wat data wat ons het. So baie dankie vir ons pragtige, beheer, en in staat is vrywilligers. En ek dink dit was dit. [Applous] Ek dink Gabe gaan nou praat op 'n hopelik minder hoë vlak. GABRIEL Guimarães: OK, guys. Kom ons praat nou 'n bietjie meer oor kode en oor Ruby on Rails self, en oor hoe dit verband hou aan al hierdie MVC storie. Basies, Ruby on Rails is 'n raamwerk. Meer oor wat in 'n tweede. Maar net om jou 'n gevoel van wie dit te gebruik, soos al hierdie groot companies-- so GitHub, Groupon, Twitter-- hulle is almal met behulp van Ruby on Relings as hul hoof raamwerk hul webwerf te implementeer. So ek is seker 'n klomp mense hier hierdie webtuistes gebruik. En dit is alles Ruby on Rails te implementeer die model, die oog, en die beheerder op al hierdie webtuistes, en nog baie meer. OK? So as ek gesê het, Ruby on Relings is 'n raamwerk. En jy kan soort van dink van 'n raamwerk in die sin van soos die bou van 'n huis. So as jy gaan om te bou 'n house-- en jy kan altyd begin van nuuts af, reg? Jy kan probeer om te kom met 'n manier om die hout te sien, en die hout na die plek te bring, en die klippe in die regte vorm te kry, en dan sal al van daardie. Maar dit gaan neem waarskynlik baie jare totdat jy al die materiaal, en jy alles saam, en jy eintlik begin jou huis te bou. So dit blyk as jy begin met 'n raamwerk met iets wat reeds soort in plek vir enige tipe van die huis dat jy iets wil build-- dit is baie generiese, maar jy kan dan model teenoor jou eie goals-- dan kan jy hefboom hierdie krag van die raamwerke te bou hulle iets baie, baie vinniger. OK. So, dit is dieselfde idee in 'n raamwerk vir 'n web-program of vir enige tipe aansoek, wat vir die saak. Jy begin eintlik uit met die helfte van 'n aansoek reeds daar in die plek vir jou. En deur daardie, ek bedoel jy baie van die lêers wat reeds funksies, soos biblioteke, soos funksies, en beveel dat jy kan hardloop om jou lewe baie te maak eenvoudiger en makliker. OK. So in hierdie geval, ons gaan om te praat oor Ruby on Rails. Daar is baie van die verskillende raamwerke daar buite. Daar is Django vir Python. Daar is Zend Framework of Laravel vir PHP. Daar is baie van die verskillende kinders. Ruby on Rails is 'n mooi mooi nuwe een. Baie van die mense gebruik wat in startups en hierdie soort van die omgewing. En 'n paar van hierdie baie groot maatskappye wat ek hier het voor word ook met behulp Ruby on Rails. Dus net 'n te gee sin van wat Ruby is soos, aangesien julle ouens is meer gewoond te, soos, C en 'n bietjie van PHP nou, so Ruby gaan die wees ekwivalent van jou PHP in hierdie sin. Dit is nie Ruby. Dit is C. OK? Maar dit is soos die DJBHash funksie wat ek weet baie mense gebruik vir PSET spelfoute. En in Ruby, mooi baie soos in PHP, jy dit kan implementeer met slegs 'n paar reëls van die kode. In plaas van om te bekommer oor die hash funksie, om te bekommer oor die emmers, en al wat jy kan net sê, woordeboek = Hash.net. En dan moet jy gebruik soort van soos dieselfde idee dat PHP gehad. En so is dit te waar. En dan as jy wil kyk, so check funksie sou wees as woordeboek "cat" gelyk gelyk ware, terugkeer waar. En dit is al, OK? So jy sien 'n paar verskille. Daar is geen semi-dubbelpunte hier, want daar was in C. Maar die algemene idee is baie soortgelyk. OK? Ook, in Ruby, daar is juwele, wat is soort van die Ruby biblioteke. En Rails hanteer hulle in 'n baie mooi manier vir jou. So as jy wil om te sit in sommige biblioteek wat doen e-pos, of dat doen sms, of wat nie die integrasie met Facebook, of enige soort van ding soos wat vir jou inligting, dit is baie, baie maklik. Kans is kan jy iets vind soos wat op die internet. En hulle net doen iets soos put wat juweel wat jy wil gebruik in die steen lêer. En dan Rails installeer alles. Jy hoef nie te bekommer oor enige van daardie, so dit is regtig cool. Ook, daar is baie, baie van die hulp aanlyn. So kan jy baie dinge vind. As jy 'n fout, jy kan net google dit, en dit gaan wees baie maklik om hulp te kry. En dit is 'n baie fun-- exactly-- omdat jy nie hoef te bekommer oor die lae-vlak besonderhede, implementering van hash tabelle en met met al vorendag te kom die HTTP-hoofde, en baie van die dinge, en selfs 'n paar meer hoër vlak dinge. Jy hoef nie bekommerd te wees oor wat in Rails. Dit doen dit baie, baie mooi vir jou. En ons gaan om te wys dat meer konkreet baie gou. OK. So 'n bietjie oor Ruby weer. So dit is net soos C, soos ek gesê het. In plaas van printf, sê ons "Sit", wat "sit string." Dit plaas 'n string na die konsole. En in hierdie geval, ons is net druk "Hello World". Ons nie die hakies moet nie, maar dit is nogal baie soortgelyk. En dan as jy wil hier iets om te doen, soos druk van 'n klomp van die "kniebroek" en 'n klomp van die "Bigs" in 'n while lus, dit is soort van soos in C, reg? Jy het nie die params, maar dit is pretty much dieselfde. Die inkeping hier tel, so x is gelyk aan 1. En dan Terwyl x is kleiner as 50-- dit is 'n As, dit is 'n ander nie. Dit is nogal baie soos wat jy gesien het. En dan x + = 1 is net die verhoog, soort van soos die doen van die ++ wat jy kan doen in C. Maar dit is redelik veel wat jy in C. gesien Dit moet nie te ingewikkeld. Maar dit is meer kragtig. So is daar 'n paar opdragte hier wat beslis 'n bietjie hoër. So byvoorbeeld, "wan." Jy kan dit hashtag notasie gebruik hier net druk something-- pretty much soos wat jy sou doen as die% D of% C of iets soos dit. En jy kan eintlik sit 'n As reg na die verklaring. So ek wil net this-- te doen As x is groter as 3. So hoekom sou ek maak 'n hele As blok? Ek weet nie. Ek kan net druk dit slegs As x is gelyk aan meer as 3. So, dit is 'n een lyn manier van hierdie doen in Ruby. 'N Lys in Ruby is iets baie veelsydig. Sodat jy nie regtig nodig het net een soort te hê. Jy kan 'n string het, en dan paar nommers, en wat ook al. En as jy wil om by te voeg iets aan 'n lys, jy kan net gebruik om hierdie notasie hier. En as jy wil Itereer. Pretty much die 4each in PHP, hier, jy het 'n lys en jy doen "List.each doen." En dit "ELEM," dit is soos die naam van elke element ek gaan in my lys te hê. En dan kan ek net "sit ELEM." En "sit" pretty much handvatsels om dit vir jou, druk dit. Dit maak nie saak of dit is 'n tou of 'n int. Dit gaan om dit uit te werk vir jou. Reg? Cool. En net soos PHP, Ruby en HTML integreer ook baie, baie mooi. En hier, daar is 'n paar HTML met Ruby in dit. So het ons 'n liggaam tag soos in HTML. En as ons wil om te kyk dat 'n gebruiker is, byvoorbeeld, aangeteken het, kan ons net sê, begin Ruby, as user.logged_in ?, einde van Ruby. Druk hierdie hele ding, wat het 'n paar Ruby in dit, wat net soort van soos wat sintaksis vir PHP dat druk uit 'n veranderlike. Kom ons druk die user.name. So welkom, Stephen, binnekant van 'n HTML div. En aan die einde, ons het 'n "einde" en Ruby kode, wat beteken dit is my As blok. OK? So dit is net soos 'n naatlose integrasie tussen Ruby en HTML. Daar is ook baie van die hulpbronne. Maar voordat ons beweeg, Het enige iemand enige vrae oor Ruby, enigiets? OK. Daar is baie van die hulpbronne aanlyn te tryruby.org, Kode Akademie, ruby-lang.org, waar jy kan probeer om dit op jou browser voordat jy eintlik sê, o, OK, ek gaan om te gebruik Ruby vir my finale projek. En so beslis gee diegene probeer. Al hierdie skyfies gaan aanlyn beskikbaar wees, sodat jy kan net aflaai. En ja? GEHOOR: [onhoorbaar] wat jy nou net gewys is HTML en die kode is ingesluit in dit tot die konsep van Model View Beheerder? GABRIEL Guimarães: Ja. Ons sal dit doen in 'n tweede wanneer ons ons voorbeeld, OK? Dankie vir die vraag. So die vraag is basies as ons kan hierdie integrasie van Ruby wys in HTML binne die Model Kyk Controller raamwerk. Dus is die idee van die Model View Controller raamwerk is dit is basies 'n filosofie, net soos Stephen hier gewys. En dit is nie iets wat jy hoef te doen, maar dit is iets wat maak jou lewe soveel makliker. En Ruby on Rails is gebou rondom hierdie filosofie van die kode. So ons gaan om te wys 'n voorbeeld baie gou. So Rails is liefde. Baie van die mense is wat dit gebruik, soos ek gesê het. En dit is regtig pret. Julle moet beslis gee dit 'n probeer. MVC maak alles makliker. So het die Model View Controller, die skeiding van dinge en om een ​​persoon, per se, of 'n deel van jou aansoek elk van die verskillende bane te doen dat jy aansoek te doen. En minder tyd spandeer op 'n lae-vlak probleme. En baie gewild op die oomblik. Ons het Rails 4.0, wat is 'n nuwe weergawe. En dit kom met 'n baie cool stuff. Nog 'n vraag. GEHOOR: Nog 'n vraag. Ruby on Rails versus Ruby on Rails Grails. GABRIEL Guimarães: OK. Die vraag was, Ruby on Rails versus Ruby-- GEHOOR: Grails. Ruby? GABRIEL Guimarães: Ja. So Ruby is die taal. GEHOOR: No. Ek vra jou 'n taal te vergelyk en 'n raamwerk, Ruby on Rails, met 'n ander gewilde taal framework-- Grails-- met Ruby on Rails. GABRIEL Guimarães: OK. Jammer. Die vraag is, te vergelyk Ruby en Ruby on Rails na 'n ander raamwerk en another-- GEHOOR: Ruby. Dit is OK. As jy nie weet nie oor dit, is dit goed. GABRIEL Guimarães: Soos, wat ek verstaan ​​is that-- GEHOOR: Daar is 'n ander raamwerk genoem Grails. GABRIEL Guimarães: Ag, Grails. Ek het nog nooit gehoor van dit. Jammer. Ek het nog nooit gehoor het van Groovy on Rails. Jammer. GEHOOR: Dis baie beter geïntegreer met Java. GABRIEL Guimarães: Ek sien. GEHOOR: Ek is net nuuskierig oor 'n paar mense wat ek ken like-- GABRIEL Guimarães: Nee, ek het nooit gehoor van die een, ongelukkig. Grails. GEHOOR: En sommige mense natuurlik soos Ruby on Rails. GABRIEL Guimarães: Ek het gebruik Ruby on Rails 'n baie. Ek het gewoonlik 'n paar Django met Python, soos ek gesê het. Ek het gewoonlik 'n paar Laravel. Maar ek het nie gebruik Groovy on Rails. Jammer. En dit is baie gewild nou met Rails 4.0. Soos sommige van die dinge wat relings doen vir jou, byvoorbeeld, is jy het baie van die CSS-lêers en baie van die JavaScript-lêers. En jy kan hulle as behandel afsonderlike en alles. Maar dan is dit automatically-- wanneer jy stuur jou kode te produksie, dit outomaties stel hulle almal in een enkele lêer dit is minified sonder enige ruimtes, sodat dit neem minder ruimte in jou aansoek, so dat jy regtig kan skaal dinge baie. Dit is waarom sulke groot maatskappye soos Twitter en GitHub gebruik Rails, omdat dit nie al wat vir jou, wat is regtig cool. Een ding wat baie, baie, baie ontmoedigend vir mense, insluitend my, wat probeer om te werk 'n raamwerk aan die begin, is dat wanneer jy begin 'n aansoek, jy gaan 'n klomp van die lêers om te sien. Soos, wanneer jy ' Relings New, my aansoek jy gaan al hierdie te sien folders-- app, bin, config, DB, lib, log, publiek. Soos baie, baie goed. En die eerste keer dat ek sien dat, ek was soos, OK, ek het geen idee wat aangaan. Ek wil net 'n te skep webwerf met "Hello, world," en dit gee my, soos, 100.000.000.000 verskillende bladsye. Ek weet nie wat gaan aan. So moet asseblief nie te afgeskrik deur daardie. Die idee is dat dit eintlik 'n half van 'n huis is daar vir jou reeds. Dit het 'n hele raamwerk vir jou reeds. Dit is hoekom daar so baie lêers. Maar die lekker ding is dat dit skei almal van hulle baie mooi. Kans is jy nie hoef te bekommer oor die meeste van hierdie dopgehou. Die belangrikste een, ek sou sê, is die app gids, waar jou app eintlik woon. So het die config, gaan jy het 'n paar dinge te instel, soos jou databasis en dinge soos watter soort databasis wat jy gebruik. Maar anders as dit, soos die meeste van jou werk gaan in app gedoen word. So in die app, jy het bates, leiers, helpers, mailers, modelle, sienings. So hier, jy begin sien dat leiers, modelle, en sienings kom in die spel. Mailers is net as jy wil e-pos te stuur. Helpers as jy wil skep 'n paar funksies wat jy gebruik 'n baie in die oog. So jy sit hulle in helpers. En bates is basies al jou beelde, al jou CSS, al jou JavaScript, en soos dié soorte van die dinge wat gestuur moet raak aan die kliënt. En alles wat in die bates, dat ek gesê het, kry minified. Dit is saamgestel. En jy regtig nie hoef te bekommer oor dat wanneer dit gaan om die produksie-kode. Cool. Nou Zack gaan om in te kom, en hy is gaan 'n voorbeeld van Twitter50 te doen. GEHOOR: Woo-hoo! ZACK CHAUVIN: Awesome. So ek het die kans om te werk met Ruby on Rails hierdie somer. Dit is 'n ongelooflike raamwerk. Ek is baie gedeeltelike om dit te. En ek sal net wys jou 'n bietjie van die 'n voorbeeld van wat dit kan lyk. Spring oor te Chrome. So, dit is 'n voorbeeld van 'n baie eenvoudige Ruby on Rails application-- iets soos hierdie is iets dat Ruby regtig uitblink that-- net waar jou modelle is baie goed-gedefinieerde. In hierdie voorbeeld, sal jy sien twee verskillende modelle, wat is dat ons gebruikers en ons het tweets. So, dit is Twitter50, Harvard se eie Twitter. Soos jy kan sien, is ek aangemeld aszack. En ek is in staat om nuwe tweets te maak. So ek think-- "Dit is 'n" - jammer? GEHOOR: [onhoorbaar]. ZACK CHAUVIN: O, OK. Nodig het om die bediener te stop. Uitstekend. So hier is ons. Soos jy kan sien, ons het ons Twitter aansoek reg hier. En dit is super maklik om die bediener te begin. Ons sal net doen "relings bediener." Groot. OK. Dankie vir dit. So nou is ons hardloop. En ons sal sê, "Dit is 'n awesome seminaar. " En laat ons sien wat gebeur. So ons sal tweet oor dit. Af aan die onderkant, kan jy sien nou is daar meer as drie tweets. So het ons 'n bietjie van pagination aangaan. En ons het dit tweet. En ek kan ook soek deur my tweets-- soek vir hierdie en die twee diegene wat die woord "Hierdie" in hulle opdaag. Ons kan ook tweets verwyder deur kliek op die klein Uitvee knoppie. En natuurlik, kan ek net verwyder die pos wat aan my behoort. Reeds, ons het byna die funksionaliteit van Twitter. Soos, wanneer jy dink oor dit, Twitter regtig nie alles doen wat veel. Dit het gebruikers, dit het tweets. Daar is 'n paar meer komplekse funksies. Maar wanneer jy regtig dit af, dit is nogal 'n eenvoudige Ruby on Rails app. En iets soos hierdie, met 'n goeie begrip van Ruby on Rails, Jy kan waarskynlik maak in 'n uur of twee. En wat werklik kom terug na die Ruby mantra, wat konvensie oor opset. So terug in die dag, mense, enige tyd hulle wou die webwerf te maak, sou hê om te begin van nuuts af. OK, ek wil 'n webwerf te maak. Kom ons maak hierdie lêer en hierdie lêer en die lêer. Met Ruby on Rails, daar is nie een van daardie. Jy sê, ek wil 'n nuwe app. En net soos Gabe het ons dit skep die hele lêer struktuur vir ons. En ons het net verander die bietjie dele wat ons nodig het om te. Ons het net pas wat is uniek aan ons jeug. Cool. So terug te gaan na die aanbieding preview-- interessant. Waar lê ek doen? GEHOOR: Volle skerm. Bo regs. ZACK CHAUVIN: Uitstekende. Cool. OK. So die eerste van alles, die model. Stephen het 'n awesome werk van waarin MVC. En nou gaan ons om met wat terug na Ruby on Rails. So het die model wat jy kan soort van dink as die databasis. Jy het al gesien hierdie in CS50 Finansies, waar die model winkels die inligting oor hoeveel aandele jy het, of al die transaksies wat jy gemaak het. Dit is 'n voorbeeld van 'n lyn van hoe jy gaan oor die maak van 'n nuwe model in Rails. So ek wil 'n gebruiker. Dit gaan 'n te hê e-pos, wat is 'n string, en 'n wagwoord, wat is ook die string. So dit is soos those-- Ek wil elke ry in my tafel van die gebruikers om te kyk soos dit. 'N awesome deel oor Rails is dat dit maak dit onnodig om skryf 'n SQL pretty much. Hoeveel van julle ouens lief skryf SQL in PSET 7? Presies. SQL is nie baie gebruikersvriendelik. En Rails abstraheer alles wat weg met hierdie baie maklik bevele. So byvoorbeeld, as ons 'n gebruiker, 'n gebruiker het baie tweets. En elkeen van daardie tweets behoort aan 'n gebruiker. So as jy hier, hierdie kyk is ons model vir ons tweet. En al wat ons het om te sê, is hierdie enkele line-- Ek is 'n tweet en ek behoort aan 'n gebruiker. En met daardie enkele lyn en 'n bietjie databasis opset, Relings stel hierdie verhouding. Anytime, kan ek net sê, zack.tweets, soos, gee my al Zack tweets. Geen SQL. Super maklik. Weereens, dit is konvensie oor opset kom in die spel. Jy kan 'n bietjie sien van 'n voorbeeld van Ruby hier. Soos gegee het, skryf Ruby is soort van soos die skryf van Engels. Dit is 'n baie hoë-vlak taal, en dit maak dit baie maklik vir ons dinge soos om te sê, ek wil maak seker dat hierdie tweet het 'n liggaam. Sy teenwoordigheid is waar. En ek wil om seker te maak dat dit maak tweet, net soos normale Twitter, het 'n maksimum lengte van 140. Dit is super-intuïtief, 'n werklik 'n groot taal. Volgende op ons het die uitsig. So dit behels HTML en CSS. En hier is 'n voorbeeld van 'n oog. So Ruby on Rails soort moeiteloos integreer beide Ruby en HTML ten einde te genereer wat ons wil op die bladsy. So, dit is 'n voorbeeld van ons uitleg. Sodat jy kan sien 'n paar etikette wat jy ouens gebruik om, soos HTML, liggaam, almal wat goeie dinge. En reg is in hier, al is, ons inkorporeer sommige Ruby deur te sê, As daar is 'n boodskap te vertoon, vertoon dan die boodskap in 'n div. So ek sal nie te veel in dit. Maar dit is in die algemeen 'n bladsy wat gelewer kry on-- en maak nie saak watter bladsy jy op, kry hierdie een gelewer. So dit is wat kry altyd ingesluit. Cool. Nog 'n voorbeeld van 'n view-- dit is die een waar dit gekies het al die tweets. En 'n paar van hierdie dinge kan lyk redelik vertroud. So byvoorbeeld, reg hier, ons is herhaling deur elk van die tweets, en ons druk hulle uit. So hier is waar ons druk die liggaam. En as die tweet se user-- hier is 'n werklike voorbeeld van geen SQL is betrokke. Ek vra maar net, is dit tweet se gebruiker die huidige gebruiker? Dan wys 'n skakel om dit te verwyder. Dit is super maklik. Die beheerder. So, dit is, weer, die koppelvlak tussen die model en die uitsig. Dit is die een wat nie die harde werk van interacting-- synde die middelman. Dit vragte inligting vir die sien, wat ons sal sien in 'n sekonde. En om te kommunikeer met die model, is dit noem model metodes, wat is wat julle is vertroud as funksies. So byvoorbeeld, is dit ons tweet se beheerder. Dit kan lyk 'n bietjie ontmoedigend nou. Maar dit is eintlik super intuïtief sodra jy begin duik in. So byvoorbeeld, in ons indeks, wat waar ons wil al die tweets te wys. En so hierdie lyn basies net vra vir al die tweets. En dan het ons inisialiseer beide die nuwe tweet-- so soos as hulle wil 'n te skep nuwe tweet op daardie bladsy. En dit vra wat die huidige gebruiker. En dit is baie soortgelyk aan die lewer dat jy in PSET 7 sien, waar dit is net 'n soort van vertel die view-- dit is soort van soos, verby die veranderlikes wat jy gaan nodig in die oog op die oog. En daar is 'n hele klomp van verskillende metodes dat hierdie tweet se beheerder kan hanteer. Maar regtig, Rails doen 'n groot taak van die soort verdeel hulle in die verskillende aksies wat jou kontroleerder kan doen. Is daar enige vrae oor enige van die MVC dele van Rails? Soort van net 'n briesie deur. So julle ouens kan kyk dit uit op jou eie. Awesome. Ons sal hou. So installeer Rails. Installering Rails kan wees, soos, een van die meer uitdagende dele van die hele Rails proses, ongelukkig. Maar natuurlik, almal van ons is om te help. En as dit eers op daar, 'n baie groot hulpbronne, as Gabe vermeld vir die slag. Hier is die skakels wat wat jy nodig het om Rails te laai om dit te kry geïnstalleer op jou rekenaar. Dit is duidelik dat, dit is beskikbaar vir beide Windows en Mac en vir die CS50 toestel. Vrae oor enigiets wat ons gesê het? GEHOOR: Ek sou wees belangstel, actually-- so ek weet dat die aflaai sagteware is die grootste struikelblok. As daar genoeg belangstelling n te hê aflaai mini-sessie of iets. ZACK CHAUVIN: MM-hm. Ja. Dit kan werklik nuttig. As iemand is regtig gung-ho oor gebruik van hierdie vir hul projek of in die toekoms, dan is ons beslis wil gelukkig wees om met jou te praat oor dit. Mm-hm. GEHOOR: 'n verwante vraag na wat ek gevra het nie. Vir dié van julle wat dit gedoen het ander raamwerke wat nog probeer om dieselfde te doen ding, maak dit makliker 'n webwerf of 'n te bou funksie, ek dink enige sin waarom sou ons on Rails versus Stuur of sommige van die ander raamwerke en tale. ZACK CHAUVIN: Ek sal net sê my $ 0,02 oor dat. Ek is mal Ruby on Rails. Ek het die kans om te werk moes in beide PHP en Ruby on Rails. Ek het baie verkies Ruby on Relings gevolg van Ruby. Beslis, dit is 'n groot deel van dit. Soos, wanneer jy die keuse van jou raamwerk, jy ook kies om jou taal. Ruby is super accessible-- Ek dink 'n baie beter taal as PHP. Maar dit is soort van persoonlike voorkeur. Sowel, 'n ander oorweging is die gemeenskap agter die raamwerk dat jy werk met. Nou Ruby on Rails is baie warm. Daar is ton van die steun agter dit. Jy na iets op Stack Oorloop oor 'n probleem is jy en sy het in Ruby on Rails, en dit is nie. Weereens, dit is open source, wat beteken dat dit voortdurend verander. Daar is ton van die mense wat werklik toegewy ten einde te maak dit 'n regtig awesome raamwerk. So dit is waarom ek wil kies Ruby on Rails. GABRIEL Guimarães: Ja. Ek sou sê dat die idee agter die meeste raamwerke jy gaan vind uit daar baie, baie soortgelyk, reg? So het die Model View Controller, die feit dat ons kontroleerder se gaan lyk soos iets soos this-- elk van die funksies is soos een van jou bladsye, en dit aansture jou, en dit initialisatie die veranderlikes. Dit gaan dieselfde ding wees vir elke raamwerk wat jy sien daar buite. En daar gaan die model te wees. En jy kan dinge doen soos, "behoort." So in plaas van om die SQL weergawe, jy net, soos, doen, user.tweets, en jy alles. Almal het dit. Behalwe in Ruby, jy doen user.tweets, en dan 'n paar raamwerke in PHP, jy doen user.getalltweets Waar my PHP is nie 'n probleem nie. Soos dit is 'n groot lyn. Dit is dieselfde ding, maar dit is 'n groot lyn. So dit is een van die vernaamste redes van my voorkeure oor Ruby. Dit is net ek presies doen dieselfde ding in ander raamwerke, Dit neem my net twee keer solank reëls van die kode. OK? Enige ander vrae? ZACK CHAUVIN: Iets Ek sal praat quickly-- Gabe gepraat 'n bietjie oor juwele. En dit is 'n baie great-- Ek bedoel, dit is 'n soort van algemeen aan alle raamwerke, dat daar is soort van 'n juweel konsep, Dit is soos in my klein voorbeeld, Ek het nie ingeteken nie. Soos jy kan inteken, inteken uit. Soos, wat eintlik soort van 'n komplekse proses. Dit is 'n bietjie hanteer bietjie vir jou in PSET 7. Maar ek het nog nie ten volle weet hoe teken-in, teken-out te implementeer. En dit is omdat Ruby on Rails het ton van juwele wat doen dinge soos dit vir jou. Weereens, konvensie oor opset. Almal gaan om te doen hierdie teken-in, teken-out stap. So hoekom nie net 'n pakket, genoem Bedink in hierdie geval, wat is 'n juweel. Jy sluit dit net. En dan is daar 'n paar help aanlyn met hoe om dit te gebruik. En jy hoef nie te bekommer oor iets soos dit. Heg foto's op hierdie things-- 'n juweel vir daardie. Soos, wanneer jy probeer om te doen iets nuuts, daar is 'n juweel vir daardie. En jy soort van net stuk saam die juwele en die bou van 'n baie komplekse aansoek baie vinnig. Cool. Enige ander vrae? STEPHEN tulband: Woo-hoo. Ek dink nie [onhoorbaar]. GABRIEL Guimarães: OK. Baie dankie, ouens. STEPHEN tulband: UVCB-bye. ZACK CHAUVIN: UVCB-bye. STEPHEN tulband: Woo-hoo. [Applous] Yay.