[Musik spiller] STEPHEN TURBAN: Så jeg er Stephen Turban. Over på siden her, måske vi kan få nogle mennesker til at dykke i. Vi har Gabriel og Zack. Så for en kort køreplan for, hvad der dette vil se ud, Jeg har tænkt mig at gøre nogle ekstremt højt niveau se på, hvad MVC er. Gabe? GABRIEL GUIMARAES: Jeg har tænkt mig at taler om Ruby og en lille smule hvordan Skinner fungerer, og hvordan det kan hjælpe dig med at opbygge web-applikationer. ZACK CHAUVIN: Og jeg har tænkt mig at vise dig et konkret eksempel på, hvordan at bruge skinner til at bygge en super fantastisk app. STEPHEN TURBAN: Awesome. Sød. Ok. Så lad os tale om MVC. Så lad os gå til næste dias, som Jeg vil gøre ved at trykke på denne knap. Og lad os gå til next-- udvikling, Jeg kan godt lide at tænke på at gå til CVS, fordi CVS er en butik og har også en V i midten. Og så lad os forestille os til en butik. Og lad os gøre denne butik sælger kun én ting. Så vi kommer til at have denne lagre kun sælge disse røde kopper. Og forestil dig gå i, og du går til forsiden af ​​butikken, og person. Og hans navn er Vince. Og Vince bølger hej på dig, siger hej. Og du bemærker én ting om Vince. Så når vi tænker over Vince, vi nødt til at tænke to vigtige adjektiver. Vince er smuk, men han er dum. OK. Så du ved, ingen fejl af hans egen, Desværre er han smuk. Han er vores opfattelse. Så vores første støbt medlem er der. Holde det i tankerne. Nu spørger du Vince, du går, hey Vince. Jeg er en kunde. Han siger hej. Jeg virkelig ønsker en af ​​dine røde kopper. Og hvad Vince sige? Er der nogen der har nogen idé om, hvad Vince siger? Jeg har tænkt mig at kolde opkald. Hvad tror du Vince siger? PUBLIKUM: Han siger, jeg kan vise dig hvor det er, men jeg kan ikke give dig en. STEPHEN TURBAN: Han siger, jeg kan vise dig hvor det er, men jeg kan ikke give dig en. Endnu værre. Alle andre har en anden idé om, hvad Vince kunne sige? PUBLIKUM: Han skal gå tjekke hvis de har nogen røde kopper. STEPHEN TURBAN: Vince ikke selv ved, han har at kontrollere. Ellers noget? Så du siger, har til kontrollere, om han har røde kopper. Gå fremad. Publikum: Hvad er en rød kop? STEPHEN TURBAN: Hvad er en rød kop? Hvad er en rød kop? Vince er forvirret. Så Vince kommer til at tale med vores næste støbt medlem, Carl. Og når vi tænker over Carl, vi mĺ tænke to store adjectives-- han er kontrollerende, men han er ude. Så Vince goes-- han går, hvad er en rød kop? Jeg ved ikke, hvad en rød kop er. Han vender sig om, og han spørger Carl. Han siger, Carl, nogen bad om en rød kop. Kan du gøre det? Og hvad Carl sige? Lad os finde ud af det. Er der nogen har nogen idé om, hvad Carl siger? Og jeg vil bare gentage det tilbage til dig. Jeg så en hånd bevægelse. PUBLIKUM: Han fortæller nogen andet at få de røde kopper. STEPHEN TURBAN: Han fortæller en anden til at få den røde kop. Præcis. Og vi har en idé der denne person kunne være? Det er et vink. Det kommer til at starte med en M. Mob? PUBLIKUM: Model. STEPHEN TURBAN: Modellen, ja. Hans navn er ikke Model, desværre, fordi det er et fjollet navn. Vi har Mitt. Og når vi tænker over Mitt-- nej, det er ikke et billede af Zack. Vi er nødt til at tænke på to centrale adjektiver med Mitt. Han er i stand til, men han er underdanig. Så Mitt ved, hvad han har at gøre, men han virkelig ikke kan gøre noget. Eller han virkelig ikke kan træffe afgørelse om sin egen. Så vi har Carl. Carl råber på Mitt. Og han siger, hey Mitt, vi har brug for røde kopper. Og Mitt går til hans rød kop depositar. Han snupper en kop, og han giver den tilbage. Er der nogen har nogen idé om, hvad sker der så? Giver koppen. Hidtil Mitt er gået til hans røde kop repository, taget det ud, tjekket det ud, sagde, Jeg tog en rød kop. Og han giver det til Carl. Har du en idé? Hvad tror du Carl gør? PUBLIKUM: Carl giver det til Vince. STEPHEN TURBAN: Carl giver det til Vince. Vince. PUBLIKUM: Og Vince viser, at det [uhørligt]. STEPHEN TURBAN: Præcis. Så det er præcis det. Så Vince tager koppen, ikke engang ved, hvad det er, men han viser det til brugeren. Så lad os prøve at genskabe dette virkelig kort. Og vi skal behov tre tavse frivillige, som du fyre vil ikke at være i stand til at tale. Så kunne jeg få fat i tre? OK. Og hvem vil du gerne være? PUBLIKUM: Jeg vil være Vince. STEPHEN TURBAN: Vince, OK. Smukke, men dum. Store. Alle andre? Vi leder efter en stand, men underdanig. Nogen andre ønsker at være i stand til? PUBLIKUM: Jeg kunne være Carl. STEPHEN TURBAN: Sød. Vi har Carl. PUBLIKUM: Mitt. STEPHEN TURBAN: Mitt, OK. Og vi får brug en-- Jeg vil være kunden. Så kom op, kom nu op. Og er alle i udsigt? Så jeg har tænkt mig at bede Vince til stå i front, bare smil, bare smilende så lyst som muligt. Og vi vil bede Carl, ret, hvorfor gør du ikke, ligesom, står lige bag hende? Og Mitt, hvorfor gør du ikke bare gå ud i ryggen, og så vil jeg give dig en gruppe af kopper at hænge ud med. Så jeg er en kunde. Jeg kommer. Og jeg gør [uhørligt] Jeg sige, hej, jeg vil gerne en kop. Perfekt. Så Vince har ingen idé. Så hvad gør Vince gøre nu? Vince-- OK, så jeg har tænkt mig at fortælle nu. Vince råber på Carl, cup! Hvad Carl gøre? Carl råber på Mitt. Mitt griber en kop. Mitt giver det til Carl. Carl returnerer det til Vince. Og Vince viser det til brugeren. Og det er en høj, høj, høj, så høj kig på MVC. Vi deler det ved at have en visning, hvad brugeren ser, en controller, en person der gør alt i baggrunden men virkelig ikke kan opdatere noget eller kan ikke gøre noget af betydning undtagen kalde visningen og modellen. Og så har vi Mitt, modellen, der opdaterer hvad data vi har. Så tak så meget for vores smukke, kontrollerende, og som er i stand frivillige. Og jeg tror, ​​det var det. [Applaus] Jeg tror Gabe vil tale nu på en forhåbentlig mindre højt niveau. GABRIEL GUIMARAES: Ok, gutter. Lad os nu tale lidt mere om kode og om Ruby on Rails selv, og om, hvordan det hænger sammen til alt dette MVC historie. Dybest set, Ruby on Rails er en ramme. Mere om det i en anden. Men bare for at give dig en fornemmelse af, hvem der bruger det, lignende, alle disse store companies-- så GitHub, Groupon, Twitter-- de er alle bruger Ruby on Skinner som deres vigtigste ramme at gennemføre deres hjemmeside. Så jeg er sikker på en masse mennesker har brugt disse hjemmesider her. Og det hele er Ruby on Rails til at gennemføre modellen, udsigten, og controlleren på alle disse hjemmesider og mange flere. OK? Så som jeg sagde, Ruby on Rails er en ramme. Og du kan slags tænke på en ramme i den forstand, ligesom at bygge et hus. Så hvis du kommer til at bygge en house-- og du kan altid starte fra bunden, ikke? Du kan prøve at komme op med en måde at save træ, og bringe træet til stedet, og at få stenene i den rigtige form, og så alt dette. Men det kommer til at tage sandsynligvis masser af år indtil du får alt det materiale, og du får det hele sammen, og du rent faktisk begynder at bygge dit hus. Så det viser sig, hvis du starter ud med en ramme med noget, der er allerede slags på plads for enhver form for hus at du ønsker at build-- noget det er meget generisk, men som du kan derefter model i retning af din egen goals-- så kan du udnytte denne magt af rammerne til at bygge dem noget meget, meget hurtigere. OK. Så det er den samme idé i en rammer for en web-applikation eller for nogen form for ansøgning, for den sags skyld. Du faktisk starte ud med en halv ansøgning der allerede på plads for dig. Og ved det, jeg mener, du får masser af filer, der allerede har funktioner, lignende biblioteker lignende funktionalitet, og kommandoer, som du kan køre i orden at gøre dit liv meget enklere og lettere. OK. Så i dette tilfælde vil vi at tale om Ruby on Rails. Der er masser af forskellige frameworks derude. Der er Django for Python. Der er Zend Framework eller Laravel til PHP. Der er masser af forskellige dem. Ruby on Rails er en temmelig nice ny. En masse mennesker bruger det i nystartede og denne form for miljøet. Og nogle af disse meget store virksomheder, jeg viste her før bruger også Ruby on Rails. Så bare for at give dig en fornemmelse af, hvad Ruby er ligesom, da du fyre er mere vant til, ligesom, C og en lille smule af PHP nu, så Ruby bliver den svarer til din PHP i denne forstand. Dette er ikke Ruby. Dette er C. OK? Men det er ligesom DJBHash funktion, jeg kender mange mennesker, der anvendes for Pset stavefejl. Og i Ruby, pretty meget gerne i PHP, du kunne gennemføre denne med kun et par linjer kode. I stedet for at skulle bekymre om hash-funktionen, skulle bekymre sig om spandene, og alt dette, kan du bare sige, ordbog = Hash.net. Og så skal du bruge lidt ligesom den samme idé, at PHP havde. Og så det er til sand. Og så, hvis du vil tjek, så tjek funktion ville være, hvis ordbog "foo" lig lig sandt, returnere sandt. Og det er alt, OK? Så du bemærke et par forskelle. Der er ingen semikoloner her, som der var i C. Men den generelle idé er meget ens. OK? Også i Ruby, der er perler, som er lidt Ruby biblioteker. Og Rails håndterer dem i en meget flot måde for dig. Så hvis du ønsker at sætte i nogle bibliotek, gør emails, eller at gør tekstbeskeder, eller som gør integration med Facebook, eller nogen form for ting sådan i din app, det er meget, meget let. Odds er, du kan finde noget ligesom på internettet. Og de bare gøre noget som put som perle, du vil bruge i perle-filen. Og så Rails installerer alt. Du behøver ikke at bekymre sig om nogen af det, så det er virkelig cool. Der er også masser, masser af hjælp online. Så du kan finde masser af ting. Hvis du har en fejl, du kan bare google det, og det vil være meget let at få hjælp. Og det er en masse fun-- exactly-- fordi du behøver ikke at bekymre dig om det lave niveau detaljer, implementering af hash tabeller og at skulle komme med alle HTTP headers, og masser af ting, og endda nogle mere højere ting niveau. Du behøver ikke at bekymre sig om det i Rails. Det gør det meget, meget pænt til dig. Og vi kommer til at vise, at mere konkret meget snart. OK. Så lidt om Ruby igen. Så det er ligesom C, som jeg sagde. I stedet for printf, siger vi "Sætter", som er "sat streng." Det sætter en streng til konsollen. Og i dette tilfælde er vi bare udskrive "Hello World". Vi har ikke brug parentes, men det er temmelig meget ens. Og så, hvis du vil at gøre noget her, ligesom udskrive en flok "klatvask" og en flok "bigs" i en while-løkke, Det er lidt ligesom i C, ikke? Du har ikke de params, men det er stort set den samme. Den fordybning her tæller, så x er lig med 1. Og så mens x er mindre end 50-- dette er en Hvis dette er et andet. Det er temmelig meget ligesom hvad du så. Og så x + = 1 er bare forøgelse, lidt ligesom at gøre det ++, som du kan gøre i C. Men det er temmelig meget, hvad du så i C. Det bør ikke være alt for kompliceret. Men det er mere kraftfuld. Så der er et par kommandoer her der er absolut en lidt nyere. Så for eksempel "sætter". Du kan bruge denne hashtag notation her til bare udskrive something-- temmelig meget gerne, hvad du ville gøre, hvis den% D eller% C eller noget i den retning. Og du kan faktisk sætte en Hvis lige efter redegørelsen. Så jeg kun ønsker at gøre denne-- Hvis x er større end 3. Så hvorfor skulle jeg nødt til at gøre en hel Hvis blok? Jeg ved det ikke. Jeg kan bare udskrive det kun hvis X er lig større end 3. Så dette er en én linje måde at gøre dette i Ruby. En liste i Ruby er noget meget alsidig. Så du behøver ikke virkelig har brug for at have bare én type. Du kan have en streng, og derefter nogle numre, og hvad. Og hvis du ønsker at tilføje noget til en liste, du kan bare bruge denne notation lige her. Og hvis du ønsker at gentage. Temmelig meget den 4each i PHP, her, du har en liste, og du gør "List.each gør." Og denne "elem," dette er Ligesom navnet på hvert element at jeg har tænkt mig at have i min liste. Og så kan jeg bare "sætter ELEM." Og "sætter" temmelig meget håndtag sætte det for dig, at udskrive det. Det betyder ikke noget, hvis det er en streng eller en int. Det kommer til at arbejde det ud for dig. Right? Cool. Og ligesom PHP, Ruby og HTML også integrere meget, meget pænt. Og her er der nogle HTML med Ruby i det. Så vi har en krop tag ligesom i HTML. Og hvis vi ønsker at kontrollere at en bruger er, for eksempel, logget ind, kan vi bare sige, begyndelsen af Ruby, hvis user.logged_in ?, slutningen af ​​Ruby. Print hele denne ting, som har nogle Ruby i det, som er lige lidt ligesom at syntaksen for PHP, der udskriver en variabel. Lad os udskrive user.name. Så velkommen, Stephen, inde i en HTML div. Og i slutningen, har vi en "ende" og Ruby kode, hvilket betyder, det er min Hvis blok. OK? Så det er ligesom en sømløs integration mellem Ruby og HTML. Der er også masser af ressourcer. Men før vi går videre, der nogen har spørgsmål om Ruby, noget? OK. Der er masser af ressourcer online at tryruby.org, Code Academy, ruby-lang.org, hvor du kan prøve det ud i din browser, før du rent faktisk sige, åh, OK, jeg skal bruge Ruby for mit afgangsprojekt. Og så helt sikkert give dem en chance. Alle disse dias er vil være tilgængelige online, så du kan bare hente dem. Og ja? Publikum: [uhørligt] hvad du lige viste blev HTML og koden indlejret i den til denne forestilling om Model View Controller? GABRIEL GUIMARAES: Ja. Vi vil gøre det i en anden når vi viser vores eksempel, OK? Tak for spørgsmålet. Så spørgsmålet var dybest set, hvis vi kan vise denne integration af Ruby i HTML inden for modellen Se ramme Controller. Så ideen om Model Rammer View Controller er det er dybest set en filosofi, ligesom Stephen viste her. Og det er ikke noget at du skal gøre, men det er noget, der gør dit liv så meget enklere. Og Ruby on Rails er bygget omkring denne filosofi kode. Så vi kommer til at vise et eksempel meget snart. Så Rails er kærlighed. En masse mennesker bruger det, som jeg sagde. Og det er virkelig sjovt. Du fyre bør helt sikkert give det en chance. MVC gør alting nemmere. Så Model View Controller, adskillelsesmidlerne ting og sætte den ene person, per se, eller en del af din ansøgning at gøre hver af de forskellige jobs at du ansøgning har at gøre. Og mindre tid om problemer på lavt niveau. Og meget populære lige nu. Vi har Rails 4.0, der er en ny version. Og det kommer med en masse cool stuff. Et andet spørgsmål. PUBLIKUM: Et andet spørgsmål. Ruby on Rails versus Ruby on Rails Grails. GABRIEL GUIMARAES: OK. Spørgsmålet var, Ruby on Rails versus Ruby-- PUBLIKUM: Grails. Ruby? GABRIEL GUIMARAES: Ja. Så Ruby er sproget. Publikum: Nej. Jeg beder dig om at sammenligne et sprog og en ramme, Ruby on Rails, med en anden populær sprog framework-- Grails-- med Ruby on Rails. GABRIEL GUIMARAES: OK. Undskyld. Spørgsmålet var, sammenligne Ruby og Ruby on Rails til en anden ramme og another-- PUBLIKUM: Ruby. Det er OK. Hvis du ikke ved om det, det er fint. GABRIEL GUIMARAES: Ligesom, hvad jeg forstår er at-- PUBLIKUM: Der er en anden ramme kaldet Grails. GABRIEL GUIMARAES: Åh, Grails. Jeg har aldrig hørt om det. Undskyld. Jeg har aldrig hørt om Groovy on Rails. Undskyld. PUBLIKUM: Det er meget bedre integreret med Java. GABRIEL GUIMARAES: jeg ser. PUBLIKUM: Jeg er bare nysgerrig om nogle mennesker, jeg kender like-- GABRIEL GUIMARAES: Nej, jeg har aldrig hørt om, at man, desværre. Grails. PUBLIKUM: Og nogle mennesker selvfølgelig gerne Ruby on Rails. GABRIEL GUIMARAES: Jeg har Brugte Ruby on Rails meget. Jeg har brugt nogle Django med Python, som jeg sagde. Jeg har brugt nogle Laravel. Men jeg havde ikke brugt Groovy on Rails. Undskyld. Og det er meget populært nu med Rails 4.0. Ligesom nogle af de ting, der Skinner gør for dig, for eksempel, er du har masser af CSS filer og masser af JavaScript-filer. Og du kan behandle dem som separat og alt. Men så er det automatically-- når du sender din kode til produktion, den automatisk samler dem alle i én enkelt fil der er minified uden rum, således at det tager op mindre plads i din ansøgning, så at du virkelig kan skalere tingene meget. Det er derfor, så store virksomheder som Twitter og GitHub bruger Rails, fordi det gør alle det for dig, som er virkelig cool. En ting, der er meget, meget, meget skræmmende for mennesker, herunder mig, der forsøger at arbejde med en ramme i begyndelsen, er at når du starter en ansøgning, du kommer til at se en masse filer. Ligesom, når du opretter Rails Ny, min ansøgning, du kommer til at se alle disse folders-- app, bin, config, db, lib, log, offentligheden. Ligesom, masser og masser af ting. Og første gang jeg så det, var jeg ligesom, OK, jeg har ingen idé om, hvad der foregår. Jeg ønsker blot at skabe en website med "Hello, world," og det giver mig, ligesom, 100 milliarder forskellige sider. Jeg ved ikke, hvad der foregår. Så skal du ikke være alt for skræmt af det. Ideen er, at det faktisk har halvdelen af et hus der for dig allerede. Det har en hel rammer for dig allerede. Det er derfor, der er så mange filer. Men det gode er, at det adskiller dem alle meget pænt. Odds er du ikke behøver at bekymre sig om de fleste af disse mapper. Den vigtigste, I ville sige, er den app mappe, hvor din app faktisk bor. Så config, er du nødt til nødt til at configurate nogle ting, ligesom din database og ting som hvilken slags database, du bruger. Men bortset fra at, ligesom de fleste af dit arbejde vil ske i app. Så i app, har du aktiver, controllere, hjælpere, afsendere, modeller, synspunkter. Så her, du begynder at se, at controllere, modeller og synspunkter kommer i spil. Afsendere er bare, hvis du ønsker at sende e-mails. Hjælpere, hvis du vil skabe nogle funktioner at du bruger en masse i visningen. Så du sætte dem i hjælpere. Og aktiver er stort set alle dine billeder, alle dine CSS, alle dine JavaScript, og ligesom den slags af ting, der bliver sendt til klienten. Og alt, hvad der er i aktiverne, at jeg sagde før, bliver minified. Det er udarbejdet. Og du behøver ikke virkelig nødt til at bekymre sig om at når det går til produktion kode. Cool. Nu Zack kommer til at komme ind, og han er vil gøre et eksempel på Twitter50. PUBLIKUM: Woo-hoo! ZACK CHAUVIN: Awesome. Så jeg havde mulighed for at arbejde med Ruby on Rails denne sommer. Det er en fantastisk ramme. Jeg er meget delvis til det. Og jeg vil bare vise dig en lille smule af et eksempel på, hvad det kunne se ud. Hop over til Chrome. Så dette er et eksempel på en meget enkel Ruby on Rails application-- noget som dette er noget at Ruby virkelig excellerer at-- bare hvor din modeller er meget veldefineret. I dette eksempel, vil du se to forskellige modeller, som er, at vi har brugere og vi har tweets. Så dette er Twitter50, Harvards egen Twitter. Som du kan se, jeg logget ind somzack. Og jeg er i stand til at foretage nye tweets. Så jeg tror-- "Dette er en" - undskyld? Publikum: [uhørligt]. ZACK CHAUVIN: Åh, OK. Behov for at stoppe serveren. Excellent. Så her er vi. Som du kan se, vi har vores Twitter applikation lige her. Og det er super nemt at starte serveren. Vi vil bare gøre "skinner server." Store. OK. Tak for det. Så nu er vi i gang. Og vi vil sige, "Dette er en awesome seminar. " Og lad os se hvad der sker. Så vi vil Tweet om det. Nede i bunden, kan du se nu er der mere end tre tweets. Så vi har en lille smule af paginering foregår. Og vi har det tweet. Og jeg kan også søge gennem min tweets-- søgen efter dette og de to dem, der har ordet "Denne" i dem dukke op. Vi kan også slette tweets ved klikke på den lille knappen Slet. Og selvfølgelig kan jeg kun slette stillingen som tilhørte mig. Allerede, vi næsten har funktionalitet Twitter. Ligesom, når man tænker over det, Twitter virkelig ikke gøre så meget. Det har brugerne, har tweets. Der er nogle mere komplekse funktionalitet. Men når du virkelig får ned til det, det er en ganske simpel Ruby on Rails app. Og noget som dette, med en god forståelse af Ruby on Rails, du sandsynligvis kunne gøre i en time eller to. Og det virkelig kommer tilbage til Ruby mantra, som konventionen i konfiguration. Så tilbage i dag, folk, når som helst de ønskede at gøre denne hjemmeside, skulle starte fra bunden. OK, jeg ønsker at lave en hjemmeside. Lad os gøre denne fil og denne fil og denne fil. Med Ruby on Rails, der er intet af dette. Du siger, jeg vil have en ny app. Og ligesom Gabe viste os, det skaber hele filstrukturen for os. Og vi bare ændre små dele, som vi har brug for. Vi har lige tilpasse, hvad er det unikke ved vores app. Cool. Så gå tilbage til vores præsentation preview-- interessant. Hvor skal jeg præsentere? PUBLIKUM: Fuld skærm. Øverst til højre. ZACK CHAUVIN: Excellent. Cool. OK. Så først og fremmest, modellen. Stephen gjorde et fantastisk job af skitserer MVC. Og nu vil vi forholde det tilbage til Ruby on Rails. Så den model, du kan slags af tænker på som databasen. Du er blevet set dette i CS50 Finans, hvor modellen butikker oplysninger om hvor mange aktier du har, eller alle de transaktioner, du har foretaget. Dette er et eksempel på en linje af, hvordan du ville gå om at gøre en ny model i Rails. Så jeg vil have en bruger. Det kommer til at have en e, som er en streng, og en adgangskode, som er også strengen. Så det er ligesom those-- Jeg vil have hver række i min tabel af brugere til at se ud som. En virkelig fantastisk del om Rails er, at det gør det unødvendigt at skrive noget SQL temmelig meget. Hvor mange af jer elskede skrive SQL i Pset 7? Præcis. SQL er ikke meget brugervenligt. Og Rails abstracts alt, væk med disse virkelig nemme kommandoer. Altså for eksempel, hvis vi har en bruger, en bruger har mange tweets. Og hver enkelt af dem, tweets tilhører en bruger. Så hvis du ser her, er dette er vores model for vores tweet. Og alt vi har at sige, er denne ene line-- jeg et tweet og jeg hører til en bruger. Og med den samme linje, en lille smule af database konfiguration, Rails opstiller dette forhold. Anytime, kan jeg bare sige, zack.tweets, lignende, giv mig alle Zack tweets. Ingen SQL. Super let. Igen, det er konvention løbet konfiguration kommer i spil. Du kan se en lille smule af et eksempel på Ruby her. Ligesom Gave sagt, skrivning Ruby er lidt ligesom at skrive engelsk. Det er et meget højt niveau sprog, og det gør det virkelig nemt for os at sige ting som, jeg ønsker at sørge for, at dette tweet har en krop. Dens tilstedeværelse er sandt. Og jeg vil være sikker på, at dette tweet, ligesom normal Twitter, har en max længde på 140. Det er super-intuitiv, en virkelig stor sprog. Næste op har vi visningen. Så dette indebærer HTML og CSS. Og her er et eksempel på en visning. Så Ruby on Rails slags problemfrit integrerer både Ruby og HTML for at generere hvad vi ønsker på siden. Så dette er et eksempel på vores layout. Så du kan se nogle tags, du fyre er vant til, ligesom HTML, krop, alt det gode ting. Og lige her, selvom vi indarbejde nogle Ruby ved at sige, hvis der er et budskab til at vise, derefter vise beskeden i en div. Så jeg vil ikke få for meget i det. Men det er generelt en side, der bliver gjort on-- og uanset hvad side du er på, bliver denne ene gengives. Så dette er, hvad der bliver inkluderet altid. Cool. Et andet eksempel på en visning-- dette er den, hvor den har valgt alle de tweets. Og nogle af disse ting kan se temmelig bekendt. Så for eksempel, lige her, vi er looping gennem hver af tweets, og vi udskriver dem ud. Så her er, hvor vi er udskrive kroppen. Og hvis tweet s user-- her er en reelt eksempel på ingen SQL er involveret. Jeg spørger bare, er det Tweet brugernavn den aktuelle bruger? Viser derefter et link til at slette den. Det er super simpelt. Controlleren. Så dette er igen grænsefladen mellem modellen og udsigten. Det er den, der gør det hårde arbejde af interacting-- være mellemmanden. Den indlæser information til se, som vi vil se i et sek. Og for at interagere med den model, opfordrer model metoder, som er, hvad jer kender som funktioner. Så for eksempel er dette vores tweet controller. Det kan se lidt skræmmende lige nu. Men det er faktisk super intuitivt når du begynder at dykke i. Så for eksempel i vores indeks, der er hvor vi ønsker at vise alle tweets. Og så denne linje dybest set bare beder for alle de tweets. Og så vi initialisere både de nye tweet-- så ligesom hvis de ønsker at oprette en ny tweet på den pågældende side. Og det spørger, hvad den aktuelle bruger er. Og det er meget beslægtet med den gøre, at du så i Pset 7, hvor er det bare sådan at fortælle den visning-- det er lidt ligesom, passerer de variabler, som du er vil få brug for i visningen til visningen. Og der er en hel masse forskellige metoder at dette tweet controller kan håndtere. Men virkelig, Rails gør et stort stykke arbejde for art opdele dem i forskellige handlinger, din controller kan gøre. Er der nogen spørgsmål om nogen af ​​MVC dele af Rails? Slags blot en leg med. Så du fyre kan kontrollere det ud på din egen. Awesome. Vi vil holde gå. Så installerer Rails. Installation Rails måtte være, ligesom, en af ​​de mere skræmmende dele af hele Rails proces, desværre. Men naturligvis alle os er omkring at hjælpe. Og når det er på der, en masse gode ressourcer, som Gabe nævnt, for at komme i gang. Her er de links, du har brug for at hente Rails at få det installeret på din maskine. Det er klart, det er tilgængeligt til både Windows og Mac og for CS50 apparatet. Spørgsmål om noget vi har sagt? PUBLIKUM: Jeg ville være interesseret i, actually-- så jeg ved, at downloading software er den største barriere. Hvis der er nok interesse til at have en downloading mini session eller noget. ZACK CHAUVIN: Mm-hm. Ja. Det kunne være virkelig nyttige. Hvis nogen er virkelig gung-ho om bruge dette til deres projekt eller i fremtiden, så vi vil helt sikkert være glade for at snakke med dig om det. Mm-hm. PUBLIKUM: Et beslægtet spørgsmål til hvad jeg spurgte før. For dem af jer, der har gjort andre rammer, der stadig forsøger at gøre det samme ting, gøre det lettere at opbygge en hjemmeside eller en funktionalitet, jeg tror nogen mening hvorfor vi vil være on Rails versus Zend eller nogle af de andre rammer og sprog. ZACK CHAUVIN: Jeg vil bare sige min $ 0,02 om. Jeg elsker Ruby on Rails. Jeg har haft mulighed for at arbejde i både PHP og Ruby on Rails. Jeg foretrækker Ruby on Skinner grund af Ruby. Bestemt, det er en stor del af det. Ligesom, når du er vælger din ramme du også vælge dit sprog. Ruby er super accessible-- jeg tror en meget bedre sprog end PHP. Men der er slags personlige præferencer. Samt, en anden overvejelse er fællesskabet bag rammen at du arbejder med. Lige nu Ruby on Rails er virkelig varmt. Der er tonsvis af støtte bag det. Du skrive noget på Stack Overflow om et problem, du er har i Ruby on Rails, og det er besvaret. Igen, det er open source, hvilket betyder at det hele tiden er at blive ændret. Der er tonsvis af mennesker der er virkelig dedikeret For at gøre dette til en virkelig fantastisk ramme. Så det er derfor ville jeg vælge Ruby on Rails. GABRIEL GUIMARAES: Ja. Jeg vil sige, at idéen bag de fleste rammer, du er kommer til at finde ud af der er meget, meget ens, ikke? Så Model View Controller, det faktum, at vores regulatorens kommer til at ligne noget ligesom denne-- hver af funktionerne er ligesom en af ​​dine sider, og det omdirigerer dig, og det initialiserer variablerne. Det kommer til at være det samme for hver ramme, som du ser derude. Og der kommer til at være model. Og du kan gøre ting som, "hører til". Så i stedet for at gøre det SQL-version, du bare, ligesom, gør, user.tweets, og du får alt. Alle har det. Undtagen i Ruby, du gør user.tweets, og derefter nogle rammer i PHP, du gør user.getalltweets Hvor min PHP er ikke et problem. Ligesom, det er en stor linje. Det er det samme, men det er en stor linje. Så det er en af ​​de vigtigste årsager af mine præferencer end Ruby. Det er bare jeg gør nøjagtig det samme i andre rammer, det tager bare mig to gange så længe linjer kode. OK? Andre spørgsmål? ZACK CHAUVIN: Noget Jeg vil nævne quickly-- Gabe snakkede lidt om perler. Og det er en rigtig store-- Jeg mener, dette er slags fælles for alle rammer, at der er sådan en perle koncept, der er som i min lille eksempel, Jeg har login. Ligesom, kan du logge ind, logge ud. Ligesom, det er faktisk form af en kompliceret proces. Det blev håndteret lidt bit for dig i Pset 7. Men jeg ved stadig ikke helt ved, hvordan at gennemføre sign-in, sign-out. Og det er fordi Ruby on Rails har tonsvis af perler, der gør den slags for dig. Igen konvention løbet konfiguration. Alle kommer til at gøre denne logon, skal du logge ud trin. Så hvorfor ikke bare lave en pakke, der kaldes Udtænke i denne sag, der er en perle. Du skal bare medtage det. Og så er der noget hjælp online med hvordan man bruger det. Og du behøver ikke at bekymre sig om noget lignende. Montering billeder til disse things-- en perle for det. Ligesom, når som helst du forsøger at gøre noget nyt, er der en perle for det. Og du slags bare sammenstykke disse perler og opbygge en virkelig kompleks ansøgning meget hurtigt. Cool. Andre spørgsmål? STEPHEN TURBAN: Woo-hoo. Jeg tror ikke, [uhørligt]. GABRIEL GUIMARAES: OK. Tak så meget, gutter. STEPHEN TURBAN: Buh-bye. ZACK CHAUVIN: Buh-bye. STEPHEN TURBAN: Woo-hoo. [Applaus] Yay.