[MUSIK SPELA] STEPHEN TURBAN: Så jag är Stephen Turban. Över på sidan här, kanske vi kan få vissa människor att dyka in. Vi har Gabriel och Zack. Så för en kort färdplan om vad detta kommer att se ut, Jag kommer att göra några extremt hög nivå titt på vad MVC är. Gabe? GABRIEL GUIMARAES: Jag kommer att prata om Ruby och lite Hur Rails fungerar och hur den kan hjälpa dig att bygga webbapplikationer. ZACK CHAUVIN: Och jag ska visa ett konkret exempel på hur att använda Skenor för att bygga en super fantastisk app. STEPHEN TURBAN: Awesome. Sweet. Okej. Så låt oss tala om MVC. Så låt oss gå till nästa bild, vilket Jag kommer att göra genom att trycka på den här knappen. Och låt oss gå till next-- utveckling, Jag gillar att tänka på att gå till CVS, eftersom CVS är en butik och också har ett V i centrum. Och så låt oss föreställa oss till en butik. Och låt oss göra detta lager säljer bara en sak. Så vi kommer att ha denna lagra bara sälja dessa röda koppar. Och tänk att du går i, och du går till framsidan av butiken, och personen. Och hans namn är Vince. Och Vince vågor hej på dig, säger hej. Och du märker en sak om Vince. Så när vi tänker på Vince, vi måste tänka om två nyckel adjektiv. Vince är vacker, men han är dum. OK. Så du vet, inget fel i hans eget, tyvärr är han vacker. Han är vår uppfattning. Så vår första rollinnehavare är där. Ha det i åtanke. Nu, fråga dig Vince, du går, hej Vince. Jag är en kund. Han säger hej. Jag vill verkligen en av dina röda koppar. Och vad Vince säger? Har någon något aning om vad Vince säger? Jag ska kalla samtal. Vad tror du att Vince säger? PUBLIK: Han säger, jag kan visa dig där det är, men jag kan inte ge dig en. STEPHEN TURBAN: Han säger, jag kan visa dig där det är, men jag kan inte ge dig en. Ännu värre. Någon annan har en annan aning om vad Vince skulle säga? PUBLIK: Han måste gå check om de har några röda koppar. STEPHEN TURBAN: Vince inte ens vet att han har att kontrollera. Något annat? Så du sa, har att kolla om han har röda koppar. Gå vidare. PUBLIK: Vad är en röd kopp? STEPHEN TURBAN: Vad är en röd kopp? Vad är en röd kopp? Vince är förvirrad. Så Vince kommer att prata med vår nästa rollinnehavare, Carl. Och när vi tänker på Carl, vi gotta tänka två stora adjectives-- han är kontrollerande, men han är oförmögen. Så Vince goes-- han går, vad är en röd kopp? Jag vet inte vad en röd cup är. Han vänder sig om, och han frågar Carl. Han säger, Carl, någon bad om en röd kopp. Kan du göra det? Och vad Carl säga? Låt oss räkna ut det. Är det någon som har någon aning om vad Carl säger? Och jag ska bara upprepa det tillbaka till dig. Jag såg en handrörelse. PUBLIK: Han berättar att någon annat att få de röda koppar. STEPHEN TURBAN: Han berättar någon annan att få den röda koppen. Exakt. Och vi har en idé vem den personen kan vara? Det är en ledtråd. Det kommer att börja med en M. Mob? ÅHÖRARNA: Modell. STEPHEN TURBAN: Modellen, ja. Hans namn är inte Model tyvärr eftersom det är ett fånigt namn. Vi har Mitt. Och när vi tänker på Mitt-- nej, detta är inte en bild av Zack. Vi måste tänka på två nyckel adjektiv med kardan. Han är kapabel, men han är undergiven. Så Mitt vet vad han har att göra, men han kan verkligen inte göra någonting. Eller han verkligen inte kan avgöra på egen hand. Så vi har Carl. Carl skriker åt Mitt. Och han säger, hej Mitt behöver vi röda koppar. Och Mitt går till hans röda cup depå. Han tar tag i en kopp, och han ger tillbaka den. Är det någon som har någon aning om vad som händer då? Ger koppen. Hittills Mitt har gått till hans röda cup förvar, tagit ut det, checkade ut, sade, Jag tog en röd kopp. Och han ger det till Carl. Har du en idé? Vad tror du att Carl gör? PUBLIK: Carl ger det till Vince. STEPHEN TURBAN: Carl ger det till Vince. Vince. PUBLIK: Och Vince visar den för [OHÖRBAR]. STEPHEN TURBAN: Exakt. Så det är precis det. Så Vince tar koppen, inte ens vet vad det är, men han visar det till användaren. Så låt oss försöka återskapa detta verkligen kort. Och vi ska behov tre tysta frivilliga, som ni kommer inte att kunna tala. Så kunde jag ta tre? OK. Och vem vill du vara? PUBLIK: Jag ska vara Vince. STEPHEN TURBAN: Vince, OK. Vackra men dumt. Stor. Någon annan? Vi letar efter en kapabel men undergiven. Någon annan vill kunna? PUBLIK: Jag kunde vara Carl. STEPHEN TURBAN: Sweet. Vi har Carl. PUBLIK: Mitt. STEPHEN TURBAN: Mitt, OK. Och vi kommer att behöva en-- Jag ska vara kunden. Så kom igen upp, kom igen upp. Och alla är med tanke? Så jag ska be Vince till stå i fronten, bara ler, precis leende så ljust som möjligt. Och vi ska be Carl, rätt, varför inte du, liksom, stå bakom henne? Och Mitt, varför inte du bara gå ut i ryggen, och sedan ska jag ge dig en grupp av koppar att umgås med. Så jag är en kund. Jag kommer. Och jag gör [OHÖRBAR] Jag säga hej, jag vill ha en kopp. Perfect. Så Vince har ingen aning. Så vad gör Vince göra härnäst? Vince-- OK, så jag kommer vara narrating nu. Vince skriker åt Carl, kopp! Vad gör Carl gör? Carl skriker på Mitt. Mitt tar en kopp. Mitt ger den till Carl. Carl återgår det till Vince. Och Vince visar den för användaren. Och det är en hög, hög, hög, så hög titt på MVC. Vi delar upp det genom att ha en uppfattning, vad användaren ser, en styrenhet, någon som gör allt i bakgrunden men verkligen inte kan uppdatera någonting eller inte kan göra något av betydelse utom att ringa utsikten och modellen. Och då har vi Mitt, modellen, som uppdaterar de data vi har. Så tack så mycket för vår vackra, styrning, och kapabla volontärer. Och jag tror det var det. [Applåder] Jag tror Gabe kommer att prata nu på en förhoppningsvis mindre hög nivå. GABRIEL GUIMARAES: OK, grabbar. Nu ska vi prata lite mer om kod och om Ruby on Rails själv, och om hur det förhåller allt detta MVC historia. I grund och botten, Ruby on Rails är ett ramverk. Mer om det i ett andra. Men bara för att ge dig en känsla för vem som använder den, liknande, alla dessa stora companies-- så GitHub, Groupon, Twitter-- de är alla använder Ruby on Skenor som sin huvudsakliga ram att genomföra deras hemsida. Så jag är säker på att många människor har använt dessa webbplatser här. Och det är alla Ruby on Rails att genomföra modellen, utsikten, och styrenheten På alla dessa webbplatser och många fler. OK? Så som sagt, Ruby on Rails är ett ramverk. Och du kan sorts tänka på en ram i betydelsen som att bygga ett hus. Så om du ska bygga en house-- och du kan alltid börja om från början, eller hur? Du kan försöka att komma upp med ett sätt att såga trä, och att föra virket till platsen, och att få stenarna i rätt form, och sedan allt detta. Men det kommer att ta förmodligen massor av år tills du får allt material, och du får allt tillsammans, och du faktiskt börja att bygga ditt hus. Så visar det sig om du börjar med en ram med något som är redan typ av på plats för varje typ av hus som du vill build-- något det är väldigt generiska men att du kan sedan modellera mot din egen goals-- då kan du utnyttja denna makt ramar för att bygga dem något mycket, mycket snabbare. OK. Så detta är samma idé i ett ram för en webbapplikation eller för varje typ av ansökan, för den delen. Man börjar faktiskt ut med en halv ansökan redan där på plats för dig. Och med det menar jag att du får massor av filer som redan har funktioner, liknande bibliotek, liknande funktionalitet, och kommandon som du kan köra för att göra ditt liv mycket enklare och lättare. OK. Så i det här fallet, kommer vi att prata om Ruby on Rails. Det finns massor av olika ramar där ute. Det finns Django för Python. Det finns Zend ram eller Laravel för PHP. Det finns massor av olika. Ruby on Rails är ett ganska trevligt ny. Många människor använder det i startups och denna typ av miljö. Och en del av dessa mycket stora företag som jag visade här innan använder också Ruby on Rails. Så bara för att ge dig en känsla för vad Ruby är liknande, eftersom ni är mer vana att, liksom, C och lite PHP nu, så Ruby kommer att vara den motsvarande din PHP i denna mening. Detta är inte Ruby. Detta är C. OK? Men detta är som DJBHash funktion som jag vet att många människor som används för pset felstavningar. Och i Ruby, pretty ungefär som i PHP, du kunde genomföra detta med bara några rader kod. Istället för att behöva oroa om hashfunktionen, behöva oroa hinkarna, och allt detta, kan du bara säga, ordboken = Hash.net. Och då du använder ungefär som samma idé som PHP hade. Och så är det till true. Och sedan om du vill kontrollera, så kontrollera funktionen skulle vara om dictionary "foo" är lika lika sant, return true. Och det är allt, okej? Så du märker några skillnader. Det finns inga semikolon här, eftersom det var i C. Men den allmänna idén är mycket lika. OK? Också i Ruby, det finns pärlor, vilket är typ av Ruby biblioteken. Och Rails hanterar dem i ett mycket trevligt sätt för dig. Så om du vill sätta i vissa bibliotek som gör e-post, eller att gör textmeddelanden, eller som gör integrering med Facebook, eller någon typ av sak så i din app, det är mycket, mycket lätt. Oddsen är att du kan hitta något sånt på internet. Och de bara gör något liknande put som pärla som du vill använda i pärla filen. Och sedan Rails installerar allt. Du behöver inte oroa dig för något av det, så det är riktigt coolt. Dessutom finns det gott, gott om hjälp på nätet. Så du kan hitta massor av saker. Om du har ett fel, du kan bara Google det, och det kommer att bli mycket lätt att få hjälp. Och det är en hel del fun-- exactly-- eftersom du behöver inte oroa dig för den låga nivån detaljer, genomförande av hashtabeller och behöva komma med alla HTTP headers, och massor av saker, och även vissa nivå saker mer högre. Du behöver inte oroa dig om det i Rails. Det gör det väldigt, väldigt bra för dig. Och vi kommer att visa att mer konkret mycket snart. OK. Så lite om Ruby igen. Så det är precis som C, som jag sa. Istället för printf, säger vi "Sätter", vilket är "sätta sträng." Det sätter en sträng till konsolen. Och i det här fallet är vi bara skriva ut "Hello World". Vi behöver inte parentes, men det är ganska mycket likartad. Och sedan om du vill att göra något här, som skriver ut ett gäng "smalls" och ett gäng "bigs" i en While-loop, Det är ungefär som i C, eller hur? Du har inte params, men det är ganska mycket samma. Fördjupningen här räknas, så x är lika med 1. Och sedan Medan x är mindre än 50-- detta är ett If, är detta ett annat. Det är ganska mycket som vad du såg. Och sedan x + = 1 är bara uppräkning, ungefär som att göra ++ som du kan göra i C. Men det är ganska mycket vad du såg i C. Det bör inte vara för komplicerat. Men det är mer kraftfull. Så finns det några kommandon här som är definitivt lite nyare. Så till exempel "sätter". Du kan använda denna hashtag notation här för att bara skriva ut something-- ganska mycket som vad du skulle göra om % D eller% C eller något sånt. Och du kan faktiskt få ett Om direkt efter uttalandet. Så jag vill bara göra this-- Om x är större än tre. Så varför skulle jag behöva göra en hel Om blocket? JAG VET INTE. Jag kan bara skriva ut detta endast om x är lika med större än 3. Så detta är en en rad sätt att göra detta i Ruby. En lista i Ruby är något mycket mångsidig. Så du egentligen inte behöver att ha bara en typ. Du kan ha en sträng, och sedan några siffror och allt vad. Och om du vill lägga något till en lista, Du kan bara använda det här notation här. Och om du vill iterera. Ganska mycket 4each i PHP, här, du har en lista och du gör "List.each gör." Och detta "elem," det här är som namnet på varje element att jag kommer att ha i min lista. Och då kan jag bara "sätter elem." Och "sätter" ganska mycket handtag sätta den för dig, skriva ut den. Det spelar ingen roll om det är en sträng eller en int. Det kommer att fungera det ut för dig. Rätt? Cool. Och precis som PHP, Ruby och HTML också integrera mycket, mycket snyggt. Och här finns det en del HTML med Ruby i den. Så vi har en kropp tagg som i HTML. Och om vi vill kontrollera som en användare är, till exempel, loggat in kan vi bara säga, början av Ruby, om user.logged_in ?, slutet av Ruby. Skriv hela denna sak, vilket har några Ruby i den, vilket är precis ungefär som den syntax för PHP som skriver ut en variabel. Låt oss skriva ut user.name. Så välkomna, Stephen, insidan av en HTML div. Och i slutet, vi har ett "slut" och Ruby-kod, vilket innebär att detta är min Om blocket. OK? Så det är precis som en sömlös integration mellan Ruby och HTML. Det finns också massor av resurser. Men innan vi går vidare, det gör någon har några frågor om Ruby, någonting? OK. Det finns massor av resurser på nätet att tryruby.org, Code Academy, ruby-lang.org, där du kan prova det ut i din webbläsare innan du faktiskt säger, åh, OK, jag ska använda Ruby för mitt slutprojekt. Och så definitivt ge dem ett försök. Alla dessa bilder är kommer att finnas tillgängliga på nätet, så du kan bara ladda ner dem. Och ja? PUBLIK: [OHÖRBAR] vad du just visade var HTML koden bäddas in den till denna föreställning om Model View Controller? GABRIEL GUIMARAES: Ja. Vi kommer att göra det i en andra när vi visar vårt exempel, OK? Tack för frågan. Så frågan var i princip om vi kan visa denna integration av Ruby i HTML inom Model Visa Controller ram. Så tanken på modell View Controller ram är det är i princip en filosofi, precis som Stephen visade här. Och det är inte något att du måste göra, men det är något som gör ditt liv så mycket enklare. Och Ruby on Rails är byggd kring denna filosofi kod. Så vi kommer att visa ett exempel mycket snart. Så Rails är kärlek. Många människor använder det, som jag sa. Och det är riktigt kul. Ni bör definitivt ge det ett försök. MVC gör allting enklare. Så Model View Controller, separerings saker och att sätta en människa, per se, eller en del av din ansökan att göra var och en av de olika jobb att du ansökan har att göra. Och mindre tid på problemen låg nivå. Och mycket populärt just nu. Vi har Skenor 4,0, som är en ny version. Och det kommer med en massa coola grejer. En annan fråga. PUBLIK: En annan fråga. Ruby on Rails kontra Ruby on Rails Grails. GABRIEL GUIMARAES: OK. Frågan var, Ruby on Rails kontra Ruby-- PUBLIK: Grails. Ruby? GABRIEL GUIMARAES: Yeah. Så Ruby är språket. PUBLIK: Nej Jag ber dig att jämföra ett språk och en ram, Ruby on Rails, med en annan populär språk framework-- Grails-- med Ruby on Rails. GABRIEL GUIMARAES: OK. Ursäkta. Frågan var, jämföra Ruby och Ruby on Rails till en annan ram och another-- PUBLIK: Ruby. Det är OK. Om du inte vet om det, det är bra. GABRIEL GUIMARAES: Precis, vad jag förstår är that-- PUBLIK: Det finns en annan ramverk kallat Grails. GABRIEL GUIMARAES: Åh, Grails. Jag har aldrig hört talas om det. Ursäkta. Jag har aldrig hört talas om Groovy on Rails. Ursäkta. PUBLIK: Det är mycket bättre integrerat med Java. GABRIEL GUIMARAES: Jag förstår. PUBLIK: Jag är bara nyfiken om några människor jag känner like-- GABRIEL GUIMARAES: Nej, jag har aldrig hört talas om att man, tyvärr. Grails. PUBLIK: Och vissa människor uppenbarligen gillar Ruby on Rails. GABRIEL GUIMARAES: Jag har begagnad Ruby on Rails mycket. Jag har använt några Django med Python, som jag sa. Jag har använt några Laravel. Men jag hade inte använt Groovy on Rails. Ursäkta. Och det är mycket populärt Nu med Rails 4,0. Liksom, en del av de saker som Räls gör för dig, till exempel, är du har massor av CSS-filer och massor av JavaScript-filer. Och du kan behandla dem som separat och allt. Men då är det automatically-- när du skickar din kod till produktion, Det sammanställer automatiskt dem alla i en enda fil som är minified utan någon utrymmen, så att det tar upp mindre utrymme i din ansökan, så att du verkligen kan skala saker mycket. Det är därför sådana stora företag som Twitter och GitHub använder Rails, eftersom den gör allt det åt dig, vilket är riktigt coolt. En sak som är väldigt, mycket, mycket skrämmande för människor, inklusive mig, som försöker arbeta med en ram i början, är att när du startar i en ansökan, du kommer att se en massa filer. Liksom, när du skapar Rails Ny, min ansökan, du kommer att se alla dessa folders-- app, bin, config, db, lib, logga, offentligt. Liksom, massor av grejer. Och första gången jag såg att, jag var som, OK, jag har ingen aning om vad som händer. Jag vill bara skapa en webbplats med "Hej, världen" och detta ger mig, liksom, 100 miljarder olika sidor. Jag vet inte vad som händer. Så snälla bli inte alltför avskräcks av det. Tanken är att det faktiskt har hälften av ett hus där för dig redan. Den har en hel ramverk för dig redan. Det är därför det finns så många filer. Men det fina är att det separerar dem alla mycket snyggt. Oddsen är att du inte behöver oroa dig om de flesta av dessa mappar. Den viktigaste, jag skulle säga, är app-mappen, där din app faktiskt lever. Så config, kommer du att måste configurate lite grejer, som din databas och saker som vilken typ av databas du använder. Men andra än att, liksom de flesta av ditt arbete kommer att ske i app. Så i app, har du tillgångar, controllers, hjälpare, utskick, modeller, vyer. Så här börjar du se att styrenheter, modeller och vyer kommer i spel. Utskick är bara om du vill skicka e-post. Medhjälpare om du vill skapa några funktioner att du använder mycket i vyn. Så du sätta dem i hjälpare. Och tillgångar är i grunden alla dina bilder, alla dina CSS, alla dina JavaScript, och liksom de sorter saker som får skickas till klienten. Och allt som är i tillgångarna, som jag sa tidigare, blir minified. Den är sammanställd. Och du behöver verkligen inte oroa sig att när det går till produktionskoden. Cool. Nu Zack kommer att komma in, och han är kommer att göra ett exempel på Twitter50. PUBLIK: Woo-hoo! ZACK CHAUVIN: Awesome. Så jag fick chansen att arbeta med Ruby on Rails i sommar. Det är en fantastisk ram. Jag är väldigt svag för det. Och jag ska bara visa en liten bit av ett exempel på hur det kan se ut. Hoppa över till Chrome. Så detta är ett exempel på en mycket enkel Ruby on Rails application-- något som detta är något att Ruby verkligen utmärker that-- precis där din modeller är mycket väl definierad. I det här exemplet ser du två olika modeller, vilket är att vi har användare och vi har tweets. Så det här är Twitter50, Harvard egen Twitter. Som ni ser, jag är inloggad somzack. Och jag kan göra nya tweets. Så jag think-- "Detta är en" - sorry? PUBLIK: [OHÖRBAR]. ZACK CHAUVIN: Åh, OK. Behöver för att stoppa servern. Utmärkt. Så här är vi. Som ni ser, vi har vår Twitter ansökan här. Och det är super lätt att starta servern. Vi ska bara göra "räls server." Stor. OK. Tack för det. Så nu kör vi. Och vi kommer att säga, "Detta är en fantastisk seminarium. " Och låt oss se vad som händer. Så vi ska twittra om det. Ner i botten, kan du se nu finns det mer än tre tweets. Så vi har lite av sidnumrering pågår. Och vi har den tweet. Och jag kan också söka genom min tweets-- sökning för detta och de två sådana som har ordet "Detta" i dem dyker upp. Vi kan också ta bort tweets från klicka på den lilla knappen Ta bort. Och självklart kan jag bara ta bort posten som tillhörde mig. Redan har vi nästan har funktionalitet Twitter. Liksom, när man tänker på det, Twitter egentligen inte göra så mycket. Det har användare, den har tweets. Det finns lite mer komplex funktionalitet. Men när du verkligen komma ner till det, det är ganska enkel Ruby on Rails app. Och ungefär så här, med en god förståelse för Ruby on Rails, Du kan nog gör i en timme eller två. Och som verkligen kommer tillbaka till Ruby mantra, vilket är konventioner över konfigurationer. Så tillbaka i dag, folk, när som helst De ville göra denna webbplats, skulle behöva börja om från början. OK, jag vill göra en hemsida. Låt oss göra den här filen och filen och filen. Med Ruby on Rails, det finns inget av det. Du säger, jag vill ha en ny app. Och precis som Gabe visade oss, det skapar hela filstrukturen för oss. Och vi ändrar bara små delar som vi behöver. Vi skräddarsyr vad som just är unikt vår app. Cool. Så gå tillbaka till vår presentation preview-- intressant. Var ska jag presentera? PUBLIK: Helskärm. Överst till höger. ZACK CHAUVIN: Utmärkt. Cool. OK. Så först av allt, modellen. Stephen gjorde en fantastisk jobb med beskriver MVC. Och nu ska vi relatera det tillbaka till Ruby on Rails. Så den modell du kan typ av tänker på som databasen. Du har sett detta i CS50 Finans, där modell butiker informationen om hur många lager du har, eller alla de transaktioner som du gjort. Detta är ett exempel på en linje av hur du skulle gå om att göra en ny modell i Rails. Så jag vill ha en användare. Det kommer att ha en e-post, som är en sträng, och ett lösenord, vilket är också strängen. Så det är som those-- jag vill varje rad i mitt bord för användare att se ut så. En riktigt häftigt del om Rails är att det gör det onödigt att skriva någon SQL ganska mycket. Hur många av er älskade skriva SQL i PSET 7? Exakt. SQL är inte särskilt användarvänligt. Och Rails abstraherar allt borta med dessa riktigt enkla kommandon. Så till exempel, om vi har en användaren, har en användare många tweets. Och var och en av dem tweets tillhör en användare. Så om du ser här, det här är vår modell för vår tweet. Och allt vi har att säga är denna enda line-- jag en tweet och jag tillhör en användare. Och med denna enda linje och en lite databaskonfiguration, Rails sätter upp denna relation. När som helst, jag kan bara säga, zack.tweets, liksom, ge mig alla Zack tweets. Ingen SQL. Super enkel. Återigen, det är konvention över konfiguration i spel. Du kan se en liten bit av ett exempel på Ruby här. Som Gav sagt, skriver Ruby är ungefär som att skriva engelska. Det är en mycket högnivåspråk, och det gör det riktigt enkelt för oss att säga saker som, jag vill se till att denna tweet har en kropp. Dess närvaro är sant. Och jag vill se till att detta tweet, precis som vanligt Twitter, har en maxlängd på 140. Det är super intuitiv, en riktigt bra språk. Nästa upp har vi utsikten. Så detta innebär HTML och CSS. Och här är ett exempel på en vy. Så Ruby on Rails slags sömlöst integrerar både Ruby och HTML i syfte att generera vad vi vill på sidan. Så detta är ett exempel på vår layout. Så du kan se några taggar som du killar är vana vid, som HTML, kropp, allt det bra grejer. Och just här, men vi införliva en del Ruby genom att säga, om det finns ett meddelande att visa, sedan visa meddelandet i en div. Så jag kommer inte att få för mycket in i det. Men detta är i allmänhet en sida som får återges on-- och oavsett vilken sida du är På, blir detta återges. Så detta är vad som får ingå alltid. Cool. Ett annat exempel på en view-- detta är den där valde alla tweets. Och en del av det här kanske ser ganska bekant. Så till exempel, just här, vi är looping igenom alla tweets, och vi skriva ut dem. Så här är där vi är skriva ut kroppen. Och om tweet s user-- här är en verkliga exempel på någon SQL är inblandade. Jag bara frågar, är detta tweet användar den aktuella användaren? Visar sedan en länk för att ta bort den. Det är super enkelt. Regulatorn. Så detta är, återigen, gränssnittet mellan modellen och vyn. Det är den som gör det hårda arbetet av interacting-- vara mellanhand. Den laddar information för visa, som vi får se i en sekund. Och för att samverka med modellen, det kallar modell metoder, som är vad ni är bekant som funktioner. Så till exempel, är det vår tweet controller. Det kan se lite skrämmande just nu. Men det är faktiskt super intuitivt när du börjar dyka in. Så till exempel i vårt index, det är där vi vill visa alla tweets. Och så denna linje i grunden bara frågar efter alla tweets. Och då är vi initiera både de nya tweet-- så gillar om de vill skapa en ny tweet på den sidan. Och det frågar vad den aktuella användaren är. Och detta är mycket besläktad med den render att du såg i PSET 7, där det är bara typ att berätta den view-- det är typ av, liksom, passerar de variabler som du är kommer att behöva i syfte att vyn. Och det finns en hel drös av olika metoder att denna tweet controller kan hantera. Men egentligen, gör Rails ett bra jobb med slag att dela upp dem i olika åtgärder som handkontrollen kan göra. Finns det några frågor om någon av MVC delar Rails? Typ av bara en bris genom. Så ni kan kontrollera ut det på egen hand. Grymt. Vi ska hålla kommer. Så installerar Rails. Installera Rails kan vara, liksom, en av de mer skrämmande delarna av de hela Räls processen, tyvärr. Men självklart, alla oss är runt för att hjälpa. Och när det är på det, mycket stora resurser, som Gabe nämnde, för att komma igång. Här är de länkar som du behöver för att att hämta Rails för att få det installerat på din dator. Självklart är det tillgängligt för både Windows och Mac och för CS50 apparaten. Frågor om allt vi har sagt? PUBLIK: Jag skulle vara intresserade av, actually-- så jag vet att nedladdning programvara är det största hindret. Om det finns tillräckligt med intresse att ha en hämtar minisession eller något. ZACK CHAUVIN: Mm-hm. Yeah. Det kan vara riktigt användbart. Om någon är riktigt gung-ho om använda detta för deras projekt eller i framtiden, då skulle vi definitivt gärna prata med dig om detta. Mm-hm. PUBLIK: En relaterad fråga vad jag frågade innan. För de av er som har gjort andra ramverk som fortfarande försöker göra samma sak sak, göra det lättare att bygga en webbplats eller en funktionalitet, tror jag någon mening om varför vi skulle vara on Rails kontra Zend eller några av de andra ramar och språk. ZACK CHAUVIN: Jag ska bara säga min $ 0,02 om det. Jag älskar Ruby on Rails. Jag har haft möjlighet att arbeta i både PHP och Ruby on Rails. Jag föredrar mycket Ruby on Skenor grund av Ruby. Definitivt, det är en stor del av den. Liksom, när du är väljer din ram, du också välja ditt språk. Ruby är super accessible-- tror jag en mycket bättre språk än PHP. Men det är typ av personliga preferenser. Som väl är ett annat övervägande samhället bakom ramen att du arbetar med. Just nu Ruby on Rails är riktigt varmt. Det finns massor av stöd bakom den. Du skriver något om Stack Overflow om ett problem är du ha i Ruby on Rails, och det är besvarade. Återigen, det är öppen källkod, vilket innebär att det ständigt är ändras. Det finns massor av människor som verkligen är dedikerade För att göra detta till en riktigt häftigt ram. Så det är varför skulle jag väljer Ruby on Rails. GABRIEL GUIMARAES: Yeah. Jag skulle säga att idén bakom de flesta ramar är du ska ta reda på det mycket, mycket likt, eller hur? Så Model View Controller, det faktum att vår styrenhetens kommer att se ut som något som this-- varje funktion är som en av dina sidor, och det omdirigeringar dig, och det initierar variablerna. Det kommer att vara samma sak för varje ram som du ser ut där. Och det kommer att bli modell. Och du kan göra saker som, "tillhör." Så istället för att göra SQL-versionen, du bara, liksom, gör, user.tweets, och du får allt. Alla har det. Utom i Ruby, gör du user.tweets, och sedan några ramar i PHP, du gör user.getalltweets VAR min PHP är inte ett problem. Precis, det är en stor linje. Det är samma sak, men det är en stor linje. Så det är en av de viktigaste orsakerna av mina preferenser över Ruby. Det är bara jag gör precis Samma sak i andra ramverk, det bara tar mig två gånger så långa rader av kod. OK? Fler frågor? ZACK CHAUVIN: Något Jag ska nämna quickly-- Gabe pratade lite om pärlor. Och det är en riktigt great-- Jag menar, det här är typ av gemensam för alla ramar, att det är lite av en pärla koncept, som är som i min lilla exempel Jag har inloggning. Liksom, kan du logga in, logga ut. Precis, det är faktiskt typ av en komplex process. Det hanterades lite bit för dig i PSET 7. Men jag vet fortfarande inte helt hur att implementera inloggnings, sign-out. Och det beror på att Ruby on Rails har massor av pärlor som gör sånt åt dig. Återigen, konventioner över konfigurationer. Alla kommer att göra detta tecken-in, loggar ut steget. Så varför inte bara göra ett paket, som kallas Utarbeta i detta fall, vilket är en pärla. Du inkluderar bara det. Och sedan finns det lite hjälp online med hur man använder den. Och du behöver inte oroa dig om något sådant. Bifoga bilder till dessa saker-- en pärla för det. Liksom, när du försöker göra något nytt, det är en pärla för det. Och du typ av bara pussla ihop dessa pärlor och bygga en riktigt komplex ansökan mycket snabbt. Cool. Fler frågor? STEPHEN TURBAN: Woo-hoo. Jag tror inte [OHÖRBAR]. GABRIEL GUIMARAES: OK. Tack så mycket, killar. STEPHEN TURBAN: Buh-bye. ZACK CHAUVIN: Buh-bye. STEPHEN TURBAN: Woo-hoo. [Applåder] Yay.