[Muziek] STEPHEN TURBAN: Dus ik ben Stephen Tulband. Dan op de zijkant hier, misschien kunnen we kunnen sommige mensen om te duiken in te krijgen. We hebben Gabriel en Zack. Dus voor een kort stappenplan over wat dit gaat uitzien, Ik ga een aantal zeer doen hoog niveau kijken naar wat MVC is. Gabe? GABRIEL GUIMARAES: Ik ga naar praten over Ruby en een beetje hoe Rails werkt en hoe het kan u helpen webapplicaties bouwen. ZACK CHAUVIN: En ik ga toon u een specifiek voorbeeld van hoe Rails gebruiken om te bouwen een super geweldige app. STEPHEN TURBAN: Awesome. Zoet. Prima. Dus laten we praten over MVC. Dus laten we gaan naar de volgende dia, die Ik zal doen door op deze knop te drukken. En laten we naar de next-- ontwikkeling, Ik denk graag over het gaan naar CVS, omdat CVS is een winkel en Ook een V in het midden. En dus laten we denken aan een winkel. En laten we deze winkel verkopen alleen één ding. Dus we gaan om dit te hebben slaan alleen verkopen deze rode kopjes. En stel je voor dat je in, en je gaat aan de voorzijde van de winkel en persoon. En zijn naam is Vince. En Vince golven hallo tegen je, zegt hallo. En je merkt één ding over Vince. Dus wanneer we nadenken over Vince, we na te denken over twee belangrijke bijvoeglijke naamwoorden. Vince is mooi, maar hij is dom. OK. Dus je weet, niet de schuld van zijn eigen, helaas, hij is mooi. Hij is onze mening. Dus onze eerste lid van de cast is er. Hou dat in gedachten. Nu vraag je Vince, je gaat, hey Vince. Ik ben een klant. Hij zegt hallo. Ik wil heel graag een van je rode kopjes. En wat zegt Vince zeggen? Heeft iemand enig hebben idee wat Vince zegt? Ik ga koud bellen. Wat denk je dat Vince zegt? Publiek: Hij zegt, ik kan je laten zien waar het is, maar ik kan niet geven u een. STEPHEN TURBAN: Hij zegt, ik kan je laten zien waar het is, maar ik kan niet geven u een. Nog erger. Iemand anders een andere idee wat Vince zou kunnen zeggen? Publiek: Hij moet cheque gaan of ze hebben geen rode kopjes. STEPHEN TURBAN: Vince niet eens dat hij moet controleren. Nog iets anders? Dus u zegt, moet controleren of hij heeft rode kopjes. Ga je gang. Publiek: Wat is een rode kop? STEPHEN TURBAN: Wat is een rode kop? Wat is een rode kop? Vince is in de war. Dus Vince gaat om mee te praten onze volgende cast lid, Carl. En als we denken over Carl, we moet nadenken over twee grote adjectives-- hij is controlling, maar hij is niet in staat. Dus Vince goes-- hij gaat, wat is een rode kop? Ik weet niet wat een rode kop is. Hij draait zich om, en vraagt ​​hij Carl. Hij zegt, Carl, iemand vroeg om een ​​rode kop. Kunt u dat doen? En wat zegt Carl zeggen? Laten we er wel uit. Heeft iemand enig idee wat Carl zegt? En ik zal gewoon herhaal het naar u terug. Ik zag een handbeweging. Publiek: Hij vertelt iemand anders om de rode kopjes krijgen. STEPHEN TURBAN: Hij vertelt iemand anders om de rode kop krijgen. Precies. En hebben we een idee wie die persoon zou kunnen zijn? Het is een hint. Het gaat om te beginnen met een M. Mob? Publiek: Model. STEPHEN TURBAN: Het model, ja. Zijn naam is niet-model, helaas, want dat is een domme naam. We hebben Mitt. En als we denken aan Mitt-- nee, dit is geen foto van Zack. We moeten denken aan twee key bijvoeglijke naamwoorden met Mitt. Hij in staat is, maar hij is onderdanig. Dus Mitt weet wat hij moet doen, maar hij echt kan niets doen. Of hij echt niet kan beslissen over zijn eigen. Dus hebben we Carl. Carl schreeuwt tegen Mitt. En hij zegt, hey Mitt, moeten we rode kopjes. En Mitt gaat naar zijn rode kop depositaris. Hij pakt een beker, en hij geeft het terug. Heeft iemand enig idee wat gebeurt er dan? Geeft de beker. Tot nu toe Mitt is gegaan naar zijn rode cup repository, genomen het uit, controleerde het uit, zei Ik nam een ​​rode kop. En hij gaf het aan Carl. Heeft u een idee? Wat denk je dat Carl doet? Publiek: Carl geeft het aan Vince. STEPHEN TURBAN: Carl geeft het aan Vince. Vince. Publiek: En Vince toont het aan [onverstaanbaar]. STEPHEN TURBAN: Precies. Dus dat is het precies. Dus Vince neemt de beker, weet niet eens wat het is, maar hij toont aan de gebruiker. Dus laten we proberen om te recreëren dit is echt kort. En we gaan behoefte drie stil vrijwilligers als jullie niet gaan te kunnen spreken. Zo kon ik drie pakken? OK. En wie zou je willen zijn? Publiek: Ik zal Vince. STEPHEN TURBAN: Vince, OK. Mooi maar dom. Grote. Iemand anders? We zijn op zoek naar een staat maar onderdanig. Iemand anders wil in staat zijn? Publiek: Ik kon Carl zijn. STEPHEN TURBAN: Zoet. We hebben Carl. Publiek: Mitt. STEPHEN TURBAN: Mitt, OK. En we gaan nodig hebben a-- Ik zal de klant. Dus kom op, kom op maximaal. En is iedereen in het oog? Dus ik ga naar Vince vragen om staan ​​aan de voorkant, maar glimlachen, gewoon glimlachen zo helder mogelijk te maken. En we gaan Carl vragen, rechts, waarom niet u, als, staan ​​vlak achter haar? En Mitt, waarom zou je niet gewoon af te gaan in de rug, en dan geef ik je een groep te doen kopjes om te hangen met. Dus ik ben een klant. Ik kom. En ik maak [onverstaanbaar] I zeggen: hallo, Ik wil graag een beker. Perfect. Dus Vince heeft geen idee. Dus wat doet Vince nu doen? Vince-- OK, dus ik ga zijn nu vertellen. Vince schreeuwt tegen Carl, cup! Wat doet Carl doen? Carl schreeuwt tegen Mitt. Mitt pakt een beker. Mitt geeft het aan Carl. Carl stuurt het terug naar Vince. En Vince toont aan de gebruiker. En dat is een hoge, hoge, hoog, zo hoog blik op MVC. We verdelen het door het hebben van een mening, wat de gebruiker ziet, een controller, iemand die alles op de achtergrond doet maar echt niet alles kan bijwerken of kan niets van enige betekenis te doen behalve bellen naar het uitzicht en het model. En dan hebben we Mitt, het model, die werkt wat data die we hebben. Dus dank je wel voor onze mooie, beheersen en in staat vrijwilligers. En ik denk dat was het. [Applaus] Ik denk dat Gabe gaat nu praten op een hopelijk minder hoog niveau. GABRIEL GUIMARAES: OK, jongens. Laten we nu praten een beetje meer over code en over Ruby on Rails zelf, en over hoe het zich verhoudt dit alles MVC verhaal. Kortom, Ruby on Rails is een raamwerk. Meer daarover in een tweede. Maar alleen maar om u een geven gevoel van wie het gebruik ervan, als, al deze grote companies-- dus GitHub, Groupon, Twitter-- ze zijn allemaal met behulp van Ruby on Rails als hun belangrijkste kader naar hun website te implementeren. Dus ik weet zeker dat veel mensen hebben hier deze websites gebruikt. En het is allemaal Ruby on Rails te implementeren het model, het uitzicht, en de controller op al deze websites en veel meer. OK? Dus zoals ik al zei, Ruby on Rails is een raamwerk. En u kunt soort denken aan een raamwerk in de zin als het bouwen van een huis. Dus als je gaat bouwen een house-- en u kunt altijd beginnen vanaf nul, toch? U kunt proberen te komen een manier om het hout zagen, en het hout naar de plaats te brengen en om de stenen te krijgen in de juiste vorm, en dan dat alles. Maar dat gaat duren waarschijnlijk veel jaren totdat je al het materiaal te krijgen, en je alles bij elkaar te krijgen, en je daadwerkelijk beginnen om uw huis te bouwen. Dus het blijkt dat als je begint met een kader met iets dat reeds soort op zijn plaats voor elk type van woning dat je iets wilt build-- dat is heel algemeen, maar dat je kunt vervolgens modelleren naar je eigen goals-- dan kunt u gebruikmaken deze bevoegdheid van de kaders op te bouwen ze iets veel, veel sneller. OK. Dus dit is hetzelfde idee in een kader voor een webapplicatie of voor elk type applicatie, wat dat betreft. Je begint eigenlijk uit met een half applicatie al is er in de plaats voor jou. En door dat, ik bedoel je krijgt veel bestanden die al hebben functies, zoals bibliotheken, zoals de functionaliteit, en opdrachten die u kunt uitvoeren om om uw leven een stuk te maken eenvoudiger en gemakkelijker. OK. Dus in dit geval, we gaan om te praten over Ruby on Rails. Er zijn veel verschillende kaders die er zijn. Er is Django voor Python. Er is Zend Framework of Laravel voor PHP. Er zijn veel verschillende. Ruby on Rails is een aardige nieuwe. Veel mensen gebruiken die in startups en dit soort omgeving. En sommige van deze zeer grote bedrijven die ik hier toonde eerder Ook met behulp van Ruby on Rails. Dus gewoon om u een geven gevoel van wat Ruby is als, omdat jullie zijn meer gewend aan, als, C en een beetje van PHP nu, dus Ruby gaat het worden equivalent van uw PHP in deze zin. Dit is niet Ruby. Dit is C. OK? Maar dit is net als de DJBHash functie die ik ken veel mensen gebruikt voor PSET spelfouten. En in Ruby, mooie net als in PHP, je kan deze uitvoering met slechts een paar regels code. In plaats van zich zorgen te maken over de hash-functie, te hoeven maken over de emmers, en dat alles, kan je gewoon zeggen, woordenboek = Hash.net. En dan gebruik je een soort van hetzelfde idee dat PHP gehad. En dus is het op true. En dan als je wilt check, dus check functie zou zijn als woordenboek "foo" gelijken gelijk waar, return true. En dat is alles, OK? Dus je ziet een paar verschillen. Er zijn geen puntkomma Hier, als er in C. Maar het algemene idee is zeer vergelijkbaar. OK? Ook in Ruby er pareltjes, die zijn soort van de Ruby bibliotheken. En Rails verwerkt ze in een zeer mooie manier voor u. Dus als je wilt om te zetten in sommige bibliotheek doet mails, of dat doet tekstberichten, of dat doet integratie Facebook, of enige soort dingen als dat voor uw app, het is heel, heel gemakkelijk. Kansen zijn kun je iets vinden als dat op het internet. En ze gewoon doen iets als put die gem die u wilt gebruiken in de gem bestand. En dan Rails installeert alles. U hoeft geen zorgen te maken over eventuele van dat, dus dat is echt cool. Ook, er is genoeg, veel hulp online. Dus je kunt heel veel dingen te vinden. Als je een fout, je kan het gewoon Google het, en het gaat te zijn heel gemakkelijk om hulp te krijgen. En het is een stuk van fun-- exactly-- omdat je geen zorgen te maken over de low-level informatie, de uitvoering van hash tabellen en hoeven komen met alle de HTTP-headers, en veel dingen, en zelfs wat meer hoger niveau dingen. U hoeft geen zorgen te maken daarover Rails. Het doet het zeer, zeer mooi voor je. En we gaan om te laten zien dat concreter zeer binnenkort. OK. Dus een beetje over Ruby opnieuw. Dus het is net als C, zoals ik al zei. In plaats van printf, zeggen wij "Zet," die "te zetten string." Het zet een string naar de console. En in dit geval, we zijn gewoon afdrukken van "Hello World". We niet de haakjes nodig, maar het is vrij veel op elkaar. En dan als je wilt om hier iets aan te doen, zoals het afdrukken van een stelletje "Smalls" en een stelletje "bigs" in een While-lus, het is net zoiets als in C, toch? Je hoeft niet de params hebben, maar het is vrijwel hetzelfde. Het inspringen hier telt, dus x is gelijk aan 1. En dan Terwijl x kleiner is dan 50-- is een Wanneer dit een Else. Het is vrij veel als wat je zag. En dan x + = 1 is gewoon het verhogen, net zoiets als het doen van de ++ die u kunt doen in C. Maar het is vrij veel wat je zag in C. Het moet niet te ingewikkeld. Maar het is krachtiger. Dus er zijn een paar commando's hier die zeker zijn een beetje nieuwer. Dus bijvoorbeeld, "puts. ' U kunt deze hashtag notatie gebruiken hier om gewoon af te drukken something-- vrij veel als wat je zou doen als de% D of% C of iets dergelijks. En je kunt eigenlijk maakte een Als direct na de uitspraak. Dus ik wil alleen dit-- doen Indien x groter is dan 3. Dus waarom zou ik moeten maken een hele Als blok? Ik weet het niet. Ik kan het gewoon afdrukken alleen als x gelijk is groter dan 3. Dus dit is een één lijn manier dit doen in Ruby. Een lijst in Ruby is iets heel veelzijdig. Zodat je niet echt nodig hebt slechts één type hebben. U kunt een string te hebben, en dan sommige nummers, en wat dan ook. En als je wilt toevoegen iets aan een lijst, u kunt deze gewoon gebruiken notatie hier. En als u wilt herhalen. Vrij veel het 4each in PHP, hier, je hebben een lijst en je doet "List.each doen." En deze "elem," dit is zoals de naam van elk element dat ga ik in mijn lijst. En dan kan ik alleen maar "zet elem." En "zet" vrij veel handvatten zetten het voor u, af te drukken. Het maakt niet uit of het is een string of een int. Het gaat om werken die voor u. Rechts? Cool. En net zoals PHP, Ruby en HTML Ook de integratie van zeer, zeer mooi. En hier, er is een aantal HTML met Ruby in het. Dus we hebben een body-tag, zoals in HTML. En als we willen controleren dat een gebruiker, bijvoorbeeld, ingelogd, kunnen we alleen maar zeggen, begin Ruby, indien user.logged_in ?, einde van Ruby. Print dit hele ding, dat heeft een aantal Ruby in, dat is gewoon net zoiets als dat syntaxis voor PHP dat drukt een variabele. Laten we het afdrukken van de user.name. Zo welkom, Stephen, binnen een HTML div. En op het einde, we hebben een "einde" en Ruby code, waardoor dit is mijn Als blok. OK? Dus het is net als een naadloze integratie tussen Ruby en HTML. Er zijn ook tal van middelen. Maar voordat we verder gaan, doet iedereen Voor vragen over Ruby, iets? OK. Er zijn tal van online bronnen naar tryruby.org, Code Academy, ruby-lang.org, waar u kunt het proberen uit op uw browser voordat u daadwerkelijk zeggen, oh, OK, ik ga gebruiken Ruby voor mijn afstudeerproject. En dus zeker geven deze een keer te proberen. Al deze dia's zijn zal online beschikbaar zijn, dus je kunt ze gewoon downloaden. En ja? Publiek: [onverstaanbaar] wat je net liet zien werd HTML en de code ingebed in het aan deze notie van Model View Controller? GABRIEL GUIMARAES: Ja. We zullen dat doen in een tweede wanneer wij zien ons voorbeeld, OK? Bedankt voor de vraag. Dus de vraag was eigenlijk als we kan deze integratie van Ruby tonen HTML binnen het model Bekijk Controller kader. Het idee van het Model View Controller kader is het is eigenlijk een filosofie, net als Stephen toonde hier. En het is niet iets dat u hoeft te doen, maar het is iets dat maakt uw leven zo veel eenvoudiger. En Ruby on Rails is gebouwd rond deze filosofie van de code. Dus we gaan om te laten zien een voorbeeld zeer binnenkort. Dus Rails is liefde. Veel mensen gebruiken het, zoals ik al zei. En het is echt leuk. Jullie moeten zeker eens proberen. MVC maakt alles eenvoudiger. Dus de Model View Controller, het scheiden dingen en zetten een persoon, per se, of een deel van uw aanvraag elk van de verschillende banen doen dat je applicatie te maken heeft. En minder tijd besteed op low-level problemen. En zeer populair op dit moment. We hebben Rails 4.0, dat een nieuwe versie. En het komt met een heleboel leuke dingen. Een andere vraag. Publiek: Een andere vraag. Ruby on Rails versus Ruby on Rails Grails. GABRIEL GUIMARAES: OK. De vraag was, Ruby on Rails versus Ruby-- Publiek: Grails. Ruby? GABRIEL GUIMARAES: Ja. Dus Ruby is de taal. Publiek: Nee. Ik vraag je om een ​​taal te vergelijken en een kader, Ruby on Rails, met een andere populaire taal framework-- Grails-- met Ruby on Rails. GABRIEL GUIMARAES: OK. Sorry. De vraag is, te vergelijken Ruby en Ruby on Rails een ander kader en another-- Publiek: Ruby. Het is OK. Als je het niet weet, is dat prima. GABRIEL GUIMARAES: Like, wat ik begrijp dat-- is Publiek: Er is een andere kader genaamd Grails. GABRIEL GUIMARAES: Oh, Grails. Ik heb nog nooit van gehoord. Sorry. Ik heb nog nooit gehoord van Groovy on Rails. Sorry. Publiek: Het is veel beter geïntegreerd met Java. GABRIEL GUIMARAES: ik zie. Publiek: Ik ben gewoon nieuwsgierig over een aantal mensen die ik ken like-- GABRIEL GUIMARAES: Nee, ik heb nooit gehoord van die ene, helaas. Grails. Publiek: En sommige mensen uiteraard zoals Ruby on Rails. GABRIEL GUIMARAES: Ik heb gebruikte Ruby on Rails veel. Ik heb gebruikt wat Django met Python, zoals ik al zei. Ik heb gebruikt wat Laravel. Maar ik had niet gebruikt Groovy on Rails. Sorry. En het is erg populair nu met Rails 4.0. Net als sommige van de spullen die Rails voor je doet, bijvoorbeeld, is dat je hebben veel CSS-bestanden en veel JavaScript-bestanden. En je kunt ze zo te behandelen aparte en alles. Maar dan automatically-- wanneer u uw code te sturen naar de productie, deze automatisch compileert ze allemaal in één enkel bestand dat is minified zonder enige ruimten, zodat het duurt minder ruimte in uw toepassing, zodat dat je echt dingen kunnen schalen veel. Dat is de reden waarom zulke grote bedrijven zoals Twitter en GitHub worden met behulp van Rails, want het doet al dat voor u, dat is echt cool. Een ding dat is zeer, zeer, zeer ontmoedigend voor mensen, waaronder ik, die proberen te werken een raamwerk in het begin, is dat wanneer je begint een toepassing, je gaat om een ​​bos van bestanden te zien. Zoals, wanneer u maakt Rails Nieuw, mijn aanvraag, je gaat al deze te zien folders-- app, bin, config, db, lib, log, publiek. Zoals, veel en veel spullen. En de eerste keer dat ik dat zag, dacht ik, OK, ik heb geen idee wat er gaande is. Ik wil gewoon een te creëren website met "Hello, world," en dit geeft me, als, 100 miljard verschillende pagina's. Ik weet niet wat er gaande is. Dus gelieve niet te ontmoedigd door dat zijn. Het idee is dat het eigenlijk de helft van een huis is er voor u al. Het heeft een totaal raamwerk voor u al. Dat is de reden waarom er zo veel bestanden. Maar het leuke is dat het scheidt ze allemaal erg mooi. Kansen zijn je hoeft geen zorgen te maken over de meeste van deze mappen. De belangrijkste, ik zou zeggen, is de map app, waar uw app daadwerkelijk woont. Dus de config, je gaat moeten een aantal dingen configureren, als uw database en dat soort dingen welke soort database die u gebruikt. Maar anders dan dat, zoals de meeste van uw werk zal worden gedaan in de app. Dus in app, je hebt activa, controllers, helpers, mailers, modellen, uitzicht. Dus hier, je begint te zien dat controllers, modellen, en uitzicht komen in het spel. Mailers zijn slechts als u mails wilt verzenden. Helpers als je wilt Maak een aantal functies dat je veel gebruikt in de weergave. Zodat je ze in helpers. En activa is in principe al uw foto's, al uw CSS, al uw JavaScript, en als die soorten van de dingen die krijgen verzonden naar de klant. En alles wat er in de activa, dat ik al eerder zei, het wordt minified. Het is samengesteld. En je niet echt zorgen te maken over dat wanneer het gaat om de productie code. Cool. Nu Zack gaat om binnen te komen, en hij is gaat om een ​​voorbeeld van Twitter50 doen. PUBLIEK: Woo-hoo! ZACK CHAUVIN: Awesome. Dus heb ik de kans om te werken had met Ruby on Rails deze zomer. Het is een geweldig kader. Ik ben zeer gedeeltelijk aan het. En ik zal gewoon je laten zien een beetje van een voorbeeld van hoe het eruit zou kunnen zien. Spring over naar Chrome. Dit is dus een voorbeeld van een zeer eenvoudige Ruby on Rails application-- iets als dit is iets dat Ruby echt uitblinkt dat-- net waar uw modellen zijn zeer goed gedefinieerd. In dit voorbeeld zie je twee verschillende modellen, die zijn dat we gebruikers en we hebben tweets. Dus dit is Twitter50, Eigen Twitter Harvard. Zoals je kunt zien, ben ik ingelogd alszack. En ik ben in staat om nieuwe tweets te maken. Dus ik think-- "Dit is een" - sorry? Publiek: [onverstaanbaar]. ZACK CHAUVIN: Oh, OK. Noodzaak om de server te stoppen. Excellent. Dus hier zijn we. Zoals u kunt zien, hebben we onze Twitter-applicatie hier. En het is super gemakkelijk om de server te starten. We zullen gewoon doen "rails server." Grote. OK. Bedankt voor dat. Dus nu zijn we draaien. En we zullen zeggen: "Dit is een geweldig seminar. " En laten we zien wat er gebeurt. Dus we zullen tweet over het. Neer op de bodem, kunt u zien nu is er meer dan drie tweets. Dus we hebben een beetje van paginering gaande. En we hebben die tweet. En ik kan ook zoeken door mijn tweets-- zoeken voor dit en de twee degenen die het woord hebben "Dit" in hen opdagen. We kunnen ook tweets verwijderen door te klikken op de kleine knop Verwijderen. En natuurlijk, ik kan alleen verwijderen het bericht dat toebehoorde aan mij. Al, we hebben bijna de functionaliteit van Twitter. Zoals, als je erover nadenkt, Twitter echt niet zo heel veel te doen. Het heeft gebruikers, het heeft tweets. Er is wat meer complexe functionaliteit. Maar als je echt aan de slag om het, het is nogal een eenvoudige Ruby on Rails app. En iets als dit, met een goed begrip van Ruby on Rails, Je kan waarschijnlijk maken in een uur of twee. En dat komt echt terug naar de Ruby mantra, dat is conventie dan configuratie. Dus terug in de dag, mensen, op elk gewenst moment ze wilden naar deze website te maken, zou moeten beginnen vanaf nul. OK, ik wil een website maken. Laten we dit dossier en dit bestand en dit bestand. Met Ruby on Rails, er is niets van dat. U zegt: Ik wil een nieuwe app. En net als Gabe toonde ons, het schept de hele bestandsstructuur voor ons. En we veranderen gewoon de kleine onderdelen die we nodig hebben om. Wij passen precies wat Het unieke van onze app. Cool. Dus terug te gaan naar onze presentatie preview-- interessant. Waar moet ik presenteren? Publiek: Volledig scherm. Rechtsboven. ZACK CHAUVIN: Excellent. Cool. OK. Dus allereerst het model. Stephen had een geweldig baan van schetsen MVC. En nu gaan we te relateren die terug naar Ruby on Rails. Zodat het model kunt u soort van denken als de database. Je heb het zien van deze in CS50 Financiën, waar het model winkels de informatie over hoeveel aandelen je hebt, of alle transacties die u hebt gemaakt. Dit is een voorbeeld van een lijn van hoe je zou gaan over het maken van een nieuw model in Rails. Dus ik wil een gebruiker. Het gaat om een ​​hebben email, een koord, en een wachtwoord, dat Ook de string. Dus het is alsof those-- Ik wil elke rij in mijn tafel van gebruikers om te kijken als dat. Een echt geweldig deel over Rails is dat het is het niet nodig om schrijf elke SQL vrij veel. Hoeveel van jullie geliefde het schrijven van SQL in PSET 7? Precies. SQL is niet erg gebruiksvriendelijk. En Rails abstraheert dat alles weg met deze echt gemakkelijk commando's. Dus bijvoorbeeld, als we een gebruiker, een gebruiker heeft vele tweets. En elk van deze tweets behoort tot een gebruiker. Dus als je hier, deze look is ons model voor onze tweet. En alles wat we te zeggen hebben is deze single line-- Ik ben een tweet en ik behoor tot een gebruiker. En met die enkele lijn en een beetje van database-configuratie, Rails zet deze relatie. Elk moment, kan ik alleen maar zeggen, zack.tweets, als, geef me al Zack tweets. Nr SQL. Super makkelijk. Nogmaals, dat is conventie boven configuratie komen in het spel. U kunt een beetje zien een voorbeeld van Ruby hier. Net als Gave zei, het schrijven van Ruby is een beetje zoals het schrijven van het Engels. Het is een zeer hoog niveau, taal, en het maakt het heel gemakkelijk voor ons om te zeggen dingen als, ik wil Zorg ervoor dat deze tweet heeft een lichaam. Haar aanwezigheid is waar. En ik wil ervoor zorgen dat deze tweet, net als normaal Twitter, heeft een maximale lengte van 140. Het is super-intuïtief, een echt geweldig taal. Next up hebben we van het uitzicht. Dus dit gaat om HTML en CSS. En hier is een voorbeeld van het oog. Dus Ruby on Rails soort naadloos integreert zowel Ruby en HTML resulterende in wat we willen op de pagina. Dit is dus een voorbeeld van onze layout. Dus je kunt een aantal labels zien dat je jongens gewend zijn, zoals HTML, lichaam, al die goede dingen. En midden in hier, hoewel, we nemen een aantal Ruby door te zeggen, als er een bericht om te laten zien, dan weer het bericht in een div. Dus ik zal niet te veel in dat krijgen. Dit is meestal een pagina die wordt weergegeven on-- en het maakt niet uit welke pagina je bent op, wordt deze weergegeven. Dus dit is wat er wordt altijd inbegrepen. Cool. Een ander voorbeeld van een view-- is degene waar hij koos voor alle tweets. En een aantal van dit spul ziet er misschien redelijk bekend. Dus bijvoorbeeld, hier, we zijn doorlussen van elk van de tweets, en we ze af te drukken. Dus hier is waar we zijn afdrukken van het lichaam. En als user-- de tweet's hier is een echt voorbeeld van geen SQL is betrokken. Ik vraag, is dit tweet gebruikers de huidige gebruiker? Dan toon een link om het te verwijderen. Het is super simpel. De controller. Dus dit is, wederom, de interface tussen het model en het uitzicht. Het is degene die het harde werk doet van interacting-- zijnde de tussenpersoon. Het laadt informatie voor de bekijken, die we zullen zien in een sec. En om te interageren het model, het noemt model methoden, die zijn wat jullie zijn bekend als functies. Dus bijvoorbeeld, is controller onze tweet's. Het is misschien een beetje te kijken nu ontmoedigend. Maar het is eigenlijk super intuïtieve als je eenmaal duiken in beginnen. Dus bijvoorbeeld in onze inhoudsopgave, dat waar we willen alle tweets te tonen. En dus is deze lijn in principe vraagt ​​gewoon voor alle tweets. En dan zowel initialiseren we de nieuwe tweet-- dus als als ze dat willen een maken nieuwe tweet op die pagina. En het vraagt ​​wat de huidige gebruiker is. En dit is zeer verwant aan de maken die je zag in PSET 7, waar het is gewoon een soort van het vertellen de view-- het is een soort van, zoals, het passeren van de variabelen die je bent gaat nodig hebben in het oog op het uitzicht. En er is een hele hoop verschillende methoden die controller van deze tweet aankan. Maar echt, Rails doet een groot werk van het soort verdelen ze in de verschillende acties die je controller zou kunnen doen. Zijn er nog vragen over een van de MVC delen van Rails? Soort van slechts een briesje door. Dus jullie kunnen controleren het uit op uw eigen. Geweldig. We zullen blijven gaan. Dus het installeren van Rails. Rails installeren zou kunnen zijn, als, één van de ontmoedigend onderdelen van het gehele Rails proces, helaas. Maar uiteraard allemaal wij zijn rond te helpen. En als het eenmaal op daar, veel grote middelen, als Gabe vermeld, voor aan de slag. Hier zijn de links die je nodig hebt om Rails downloaden om het te krijgen geïnstalleerd op uw machine. Uiteraard, het is beschikbaar voor zowel Windows als Mac en voor de CS50 apparaat. Vragen over alles wat we hebben gezegd? Publiek: Ik zou zijn geïnteresseerd, actually-- dus ik weet dat het downloaden software is de grootste barrière. Als er voldoende belangstelling voor een hebben het downloaden van mini-sessie of zoiets. ZACK CHAUVIN: Mm-hm. Yeah. Dat zou echt nuttig zijn. Als er iemand is echt gung-ho over het gebruik van deze voor hun project of in de toekomst, dan zeker zouden we graag met je praten over dat. Mm-hm. Publiek: Een verwante vraag naar wat ik vroeg voor. Voor degenen onder u die hebt gedaan andere kaders die nog proberen om hetzelfde te doen ding, het gemakkelijker maken naar een website of een te bouwen functionaliteit, denk ik geen zin waarom zouden we on Rails versus Zend of een deel van de andere kaders en talen. ZACK CHAUVIN: Ik zal gewoon zeggen dat mijn $ 0,02 over. Ik hou van Ruby on Rails. Ik heb de kans om te werken had zowel in PHP en Ruby on Rails. Ik prefereer Ruby on Rails vanwege Ruby. Zeker, dat is een groot deel van het. Zoals, als je het kiezen van uw kader, je kiest ook uw taal. Ruby is super accessible-- denk ik een veel betere taal dan PHP. Maar dat is een soort van persoonlijke voorkeur. Als goed, een andere overweging is de gemeenschap achter het raamwerk dat u werkt met. Nu Ruby on Rails is echt warm. Er zijn tonnen van steun achter het. Je iets op Stapel plaatsen Overloop over een probleem je bent hebben in Ruby on Rails, en het is beantwoord. Nogmaals, het is open source, wat betekent dat het voortdurend veranderd. Er zijn tal van mensen die echt zijn gewijd teneinde waardoor dit een echt geweldig kader. Dus dat is de reden waarom ik zou kiezen voor Ruby on Rails. GABRIEL GUIMARAES: Ja. Ik zou zeggen dat het idee achter de meeste frameworks je bent gaan om uit te vinden is er zeer, zeer vergelijkbaar zijn, toch? Dus de Model View Controller, het feit dat onze controller ga ergens op te lijken zoals dit-- elk van de functies is als een van uw pagina's, en je wordt omgeleid, en initialiseert variabelen. Dat gaat hetzelfde voor zijn elke kader die je ziet die er zijn. En daar gaat het model. En je kunt dingen doen, zoals, "behoort." Dus in plaats van het doen van de SQL-versie, je enkel, als, te doen, user.tweets, en je krijgt alles. Iedereen heeft dat. Behalve in Ruby, user.tweets denk je, en vervolgens een aantal kaders in PHP, je user.getalltweets doen Waar mijn PHP is geen probleem. Zoals, het is een grote lijn. Het is het zelfde ding, maar het is een grote lijn. Dus dat is een van de belangrijkste redenen van mijn voorkeuren dan Ruby. Het is gewoon ik doe precies hetzelfde in andere kaders, het duurt me gewoon twee keer zolang regels code. OK? Een andere vragen? ZACK CHAUVIN: Something Ik zal vermelden quickly-- Gabe praatten een beetje over edelstenen. En dat is echt een geweldig-- Ik bedoel, dit is een soort van gemeenschappelijk voor alle kaders, dat is een soort van een juweeltje concept, die is net als in mijn kleine voorbeeld, Ik heb in te loggen. Zoals, kunt u zich aanmeldt, afmelden. Zoals, dat is eigenlijk soort een complex proces. Het was een beetje behandeld bit voor u in PSET 7. Maar ik weet nog steeds niet helemaal weet hoe te implementeren sign-in, sign-out. En dat komt omdat Ruby on Rails heeft tonnen van edelstenen die dingen doen, zoals dat voor u. Nogmaals, conventie boven configuratie. Iedereen gaat doen dit teken-in, sign-out stap. Dus waarom niet gewoon een pakket, genaamd Bedenk in dit geval, dat is een juweeltje. Je onder andere het gewoon. En dan is er wat hulp online met hoe het te gebruiken. En je hoeft je geen zorgen te maken over iets dergelijks. Bevestigen van foto's om deze things-- een juweeltje voor. Zoals, wanneer je probeert te doen iets nieuws, er is een juweeltje voor. En je soort van net stuk samen deze juweeltjes en het opbouwen van een heel complex applicatie zeer snel. Cool. Een andere vragen? STEPHEN TURBAN: Woo-hoo. Ik denk niet dat [onverstaanbaar]. GABRIEL GUIMARAES: OK. Hartelijk dank, jongens. STEPHEN TURBAN: Buh-bye. ZACK CHAUVIN: Buh-bye. STEPHEN TURBAN: Woo-hoo. [Applaus] Yay.