GABRIEL Guimaraes: Jen CS50. Bonvenon Amazing Web aplikaĵoj per Ruby on Rails. Do por iu ajn kiu estas interesita en retejo evoluo kaj farado retejoj, retejo aplikojn, Ruby on Rails estas ĉi mirinda ilo kiu Twitter, GitHub, Groupon, kaj ĉiaj vere bela, kaj granda, ttt aplikoj uzas en la lastaj kelkaj jaroj. Kaj estas vere, vere malvarmeta karakteriza, friska ilo, ĉar novas. Do ĝi havas ĉiujn el la novaj potencaj teknologioj korpigis en unu kadron kiu helpas vin trakti ĉiaj mirinda aferojn. Sed kio estas kadro? Do ablono estas esence iu kiu kreas - kiam vi komencas retejo, se vi komencis de nulo, kiel vi malfermas gedit tie, kaj vi volas programi ĉiuj de via HTML, kaj kodo, cxiuj de viaj PHP, ĉiuj de viaj CSS, ĉio el nenio - Tio estas nur tuj estos multe da laboro. Kaj ablono laŭvorte donas vin duono de la retejo farita jam. Do vi dividus kun duono de retejo kiu havas ĉiu tie por vi. Kiel la datumbazo rilatoj, kaj ĉiuj specoj de aferoj kiujn vi devas maltrankviligi pri se vi faras ĝin el nenio, vi ne devas zorgi pri tiuj, malalta nivelo detaloj. Sed hodiaŭ ni iras eksporti unu el la retejoj ke la novulo de la Klaso de 2017 estas verŝajne familiara. Do tiu retejo estas la paĝaro por ke mi faris por nia klaso super la somero. Estis retejo kie la studentoj de la klaso de 2017 povis ensaluti kaj interagi kun aliaj. Kaj tiam ĉi estas mapo - ĉiuj, kie homo estas. Kaj ni havis libron ludo, kantoj ludo kie ni vidis popola kantojn kaj popola libroj. Kion ili ŝatas legi, kion ili ŝatas aŭskulti. Kaj la plej interesa parto de ĝi estas ke laŭvorte prenis min tri horoj kodigi cxiujn el ĝi. Ĉar se mi devis fari ĉion de nulo, kiel malfermi gedit, ĝi probable estus preninta mi 20 30 horoj. Sed kun Ruby on Rails, ĉar ĉio estis jam starigis al mi, nur prenis min tri aŭ kvar horoj, aŭ io kiel tio. Do kio estas Ruby on Rails. Ruby on Rails, denove kiel ni jam diris, estas kadro. Jen estas bildo de ablono. Do vi iras por komenci konstruado domo, vi jam havas duonon de la domo farita. Tio estas la kadro. Kaj Ruby on Rails estas ĝuste tiel. Kaj vi devas pensi pri tio kiel vi starti retejo, vi komencas viajn ttt apliko, ni jam havas duono de ĝi farita tie. Sed antaŭ ĉio, kio estas Ruby? Ruby on Rails uzas la modelon vido adaptilo, kiu estas paradigmo, kiu Estas vere interesa - kaj ĉiujn el la aplikoj nuntempe uzi ion kiel tio. Tiu ideo apartigi tion en tri partojn, la modelo, la vido, kaj la regilo. Ni iras por paroli iom pli pri tio poste. Unue, kio estas Ruby? Do tiu estas Rubeno. Kaj ĉi tiu estas la simbolo de la lingvo nomata Rubeno. Rubeno estas unu el la newish interpretitaj lingvoj, do skripto. Ĝi estas lingvo ke ne estas kompilita kiel C. Ĝi estas kompilita fuĝas. Do tio estas bona, ĉar, same kiel PHP, ekzemple ankaŭ interpretita, estas Ne kompilitaj. Tio estas bona, ĉar lia portebla. Do vi simple pasas via kodo de unu maŝino al alia. El Linuksa masxino, al Vindoza maŝino, por Mac aŭ Apple maŝino, aŭ io kiel tio. Kaj vi ne bezonas zorgi pri detaloj pri ĉiu el la specifaĵoj mastrumaj sistemoj. Ĝi okazas labori ĉie. Kaj Ruby estas lingvo, ke - vi uloj verŝajne memoros tion. Homoj uzas la krada funkcio implementado en C por la hash tablo lasta semajno kaj havis cxiajn de segmentación kulpoj. Kaj tiam tion, maltrankviligante ĉu ke kordo i tie, la kordo i ĉi tie, estis efektive minuskle aŭ majuskle, aŭ tiuj tipo de preocupante malalta nivelo detaloj. Nu en Rubeno, se vi volas apliki kradon tablo, tiu estas precize kiel vi krei hash tablo. Vi diras, vortaro, tiu estas la nomo de miaj variablo, = "Hash.new". Kaj tiam vortaro ["foo"], kaj kiam mi estas aldonante foo al mia hash tablo, mi estas nur dirante foo estas tie. Kaj tiam se mi volis kontroli, ĉu foo estis tie, mi nur diru, se vortaro ["foo"] == vera reveno vera. Haltu, kaj tio estas via hash tablo. Tio estas la efektivigo de hash tablo en Ruby. Do ĉiuj deziris ili povus havi uzis ion kiel Ruby por lastaj semajno pset, ĉu ne? Ni havas ĉiajn kialoj voli uzi lingvon kiel Ruby. Ruby havas gemoj. Gemo estas nomo por ia de biblioteko en Ruby. Do ĉiaj interesaj trajtoj ke vi povas havi, ekzemple, se mi volas integri mia apliko. Tio Harvard 2017 apliko estis integrita al Facebook. Do vi povus ensaluti, tra Facebook, al la programon. Do, se vi faros tion, vi ne bezonas zorgi pri la sendo de iuj HTTP-peto al Facebook, kaj atendante por la respondo, kaj devigante la respondo, kaj bla, bla, bla. Vi nur elŝuti la gemon, ke faras ĉiu, ke por vi. Kaj tiam vi ne bezonas zorgu pri ĉio tio. Kaj tiam multaj helpo linio, kompreneble. Estas multaj, multaj, multaj retejoj kiuj tuj helpi vin ambaŭ kun Ruby kaj kun Rails. Kaj estas multaj amuze kodo. Ĝuste ĉar vi povas ĉesi maltrankviligante pri tiuj ne estas tiel amuza problemojn. Kiel, se io estas minuskle aŭ majuskla, kaj tiam kial estas tiu doni al vi segmentación kulpo, kaj vi povas vere plonĝi en la tre interesajn aferojn. Plonĝi en la vere malvarmeta problemojn. Do Rubeno estas simple kiel al C en senso. Do tio ne tuj eblas, ke big de salto en la praktiko. Do metas, jen nia print app en Ruby. Mi kredas ke vi povus uzi print tro, sed metas estas kion ĉiuj uzas. Do simple metas "Saluton Mondo". Vi povis, aŭ vi ne povus, havi la parentezo cxirkauxantaj "Saluton mondo" tie. Vi povas simple elekti ĉu aŭ ne uzi tion. Kaj tiam x = "1". Al dum buklo aspektas bela la samo. Ĝi nur havas malpli sintakso. Ĝi estas speco de purigisto iomete. Kaj tiam se x> 25 metu "Big!" kaj alia metas "Malgranda ...". Kaj ĝi estas speco de C en tiu senco. Do, se vi rigardas tion, vi povas alproksimiĝo probable kompreni ĉio, kio okazas. Sed ĝi estas pli potenca. Pli potenca ĉar, pli ol tio, ĝi povas fari tion ne estas, ke - ia hackage iomete. En C vi ne povus fari en nur faru per unu linio. Ekzemple, metas "Mi estas # {x}". Tiu estas nur sintakson por meti la valoron de x ĉi tie, kaj ne presi la karaktero x. En C vi devis fari la procento d, kaj tiam starigu la variablo x post la COMMA tie, aŭ io simila. Kaj en Ruby ne estas stenografio por simple fari tion. Kaj metas tion, se x> 3, do vi povas metu la se ĉiuj en unu linio. Kaj tiam oni listo. Listoj en C, kiel tabelo, vi devas sekvigi kiom granda via tabelo estas aŭ alie vi ricevos segmentación fault. Via tabelo estas nur unu tipon. Do ĝi estas ĉu aro de zorge aux tabelo de entjeroj. En ĉi tiu kazo, mi kreis lerta ĉi tie, tio estas tabelo, kiu havas la unuan elemento estas ĉeno, Johano, kaj poste kvar, du - tiuj estas entjeroj. Kaj tiam mi nur aldonu, listo, la Maldekstra Angle krampo, Maldekstra Angle krampo, tri. Tio signifas simple append ion por mia listo. Do ĝi estas speco de pli interesa ĉar se vi volas uzi tion kiel nur simpla listo de entjeroj, vi povus, plene. Tio estas tute bone. Nur metu entjeroj tie. Sed se vi volas fari ion ke estas pli konvinka, kiuj havas aliajn aferojn, kiuj havas - Mi ne scias, cxiuj specoj de listoj en tie, aŭ aliaj objektoj, kiuj estas pli interesa, vi povas tute fari tion. Estas tute bone. Kaj tiam se vi volas persisti tra la listo, vi povus uzi la plu C-ish speco de alproksimiĝo. Tio estas por buklo, vi komenci variablo, i = "1", aŭ i = "0". Kaj poste vi iros, kaj ankaŭ persisti, kaj mi atingos de la elementoj. Sed vi povus ankaŭ uzi ĉi pli Ruby-kiel alproksimiĝo. Tio estas ĝuste kiel list.each. Tio nur diras, revenu al mi ĉiuj elementoj de la listo. Kaj faru kun ĉiu ero, voki ilin elem. Do tiu estas nur nomo kiun mi donante al ĉiu elemento. Kaj jen cxi tiu tuj ripeti por ĉiuj la elementoj, kaj elem, ĝi okazas esti la vojo, kiun ni aliri ke sola ero. Do vi povus tute algluita al la C alproksimiĝon, sed tio funkcias ankaŭ. Kaj ĝi estas precize la sama afero, OK. Kaj krom tio, estas vere, vere facile integri Rubeno kaj HTML ĉar vi uloj estas interesita en ttt aplikoj. HTML estas definitive io ke vi tuj uzi multe. Kaj tie, se vi volas meti Rubeno en HTML, simple starti tie, <%. Tio signifas, ĉi tie Rubeno startas. Kaj tiam%>, speco de kiel PHP en tiu senco. Ĉi tie Rubeno finiĝas kaj tiam vi povas nur metu vian, se en ĉi tie. Kaj tiam mi havas iun variablo user.logged_in. En ruby, ni kutime aldonas tiujn, ĉu pridemandado markon aŭ ekkrion markon, kiel datenbanko karaktero, nur speco de distingi inter niaj funkcioj. Sed vi ĵus metis tiun por via propra bono. Ĝi ne estas iu kiu ŝanĝas nenio en la funkciojn. Do simple por memorigi al mi ke ĉi tiu estas funkcio - kaj funkcioj en Ruby: prefere ol C, kiel mi jam diris, ili ne bezonas la krampoj. Por ke ensalutinta aferon, jen funkcio, tio metodo. Sed vi ne eksplicite bezonas meti la krampojn en tie. Do simple demandi, se la uzanto estas ensalutinta, kaj se la uzanto estas ensalutinta, nun HTML komenciĝas denove. Do Bonvenon, kaj ĉi tie Mi presis la user.name. Kaj tio estas ĝi. Do tio estas sufiĉe rekte antaŭen, kiom vi integros Rubeno kun via HTML. Kaj rimedojn, kiel mi diris, estas cxiajn rimedojn por Ruby. Vi infanoj povas ĉiu aspektas ĉi supren poste ĉar ambaŭ la video, kaj la diapozitivoj, tuj estos havebla rete. Kaj nun ni enir Rails. Rails estas amo. Rails - tiel Rubeno estas lia lingvo. OK, ĝuste kiel PHP, simple ŝatas Pitono. Ĝi estas altnivela lingvo, ne kiel C. C la meza, malalta nivelo lingvo en la senco, ke Rubeno vi ne devas maltrankviligi memoro reasignación, kaj montriloj, kaj tiuj specoj de aferoj. Sed Rails estas ĉi programo kiu estis skribita en Ruby. Kaj ĝi uzas Ruby, por havi tiun kadro, por ke vi povos konstruu awesome ttt aplikoj. Do vi devas unue instali Ruby on vian maŝinon, sed plej maŝinoj jam havas tion. Kaj tiam instalu reloj sur gxian supron. Ni tuj paroli pri tio poste. Kaj kial Rails? Do MVC, tiu estas la modelo view adaptilo Ni parolis pri iom iom, faras ĉion simpla ĉar ĝi dividas proprajxon koncepte malsamaj en malsamaj partoj de via kandidatiĝo. Malpli da tempo pasis je malalta nivelo problemoj, denove, kaj tre, tre popularaj aktuale. Do por ĉiuj, kiuj interesiĝas pri la funkciigas sceno, aŭ en io kiel komenci negocojn kaj popolo en la teknologio de merkato, kiuj estas ekde ilia propra komerco nun Estas vere, vere ŝatantoj de Ruby on Rails ĉar ĝi estas tiel rapida. Do vi povas akiri ion supren kaj kurante en malpli ol unu tago, kaj tio estas vere tre konvinka argumento por uzi Rubeno. Kaj Rails 4,0 - ĝi estas tre freŝa el la forno nun. Do Rails 4,0 - Mi kredas ke la unua ĵeto estis en marto ĉi jaron. Kaj ĝi estas vere bela, gxi havas cxiujn specoj de nova, cool karakterizaĵoj. Do Ruby on Rails estas kadro tio konstante ĝisdatigita por havi ĉiujn de la nova teknologio. La unuan fojon mi provis uzi Ruby on Rails, mi havis ĉi problemojn, ĉar mi kreis mian unuan ttt apliko, kaj ĝi aspektis tute tiel. Do ĝi kreas ĉiuj el tiuj dosieroj vin, kaj mi havis nenian ideon, kio - kio estas tio? Ĝi kreis ĉiuj tiuj dosieroj, kaj mi nur volis krei simplan programon, simplaj HTML-paĝo. Kaj mi ecx ne povis fari nenion. Do mi estis iomete malgxojas. Sed tio estas unu el aferoj, ke iam vi komprenos ĝin, ĉio fariĝas tiel multe pli klara. Do ne estos premita de la unua vido de tio, kion vi kredas je la komenco. Do kio okazas estas Rails kreas ĉiuj tiujn dosierojn. Do unu el kiuj estas dokumento, dokumentaro. Db, tio rilatigita al la datumaro. Lib, tio bibliotekoj ensaluti. Publika, skripto, kaj kelkajn aferojn. Pli malpli ĉiuj vi tuj zorgu pri estas la app dosierujo, tie supre. Tio estas la dosierujo kiu enhavas via kandidatiĝo. Ĉiuj de la aliaj dosieroj - iuj el ili estas gravaj, kaj vi estas lernos pri tio poste. Sed ili estas nur ĉi tie enhavas la kadro. Do la unuaj kolonoj de la domo vi uloj konstruas, OK? Sed la app dosierujo - tio estas la vere grava. Kaj la app dosierujo havas aktivojn. Valoraĵoj estas preskaux cxio ke venas. Bildoj ekzemple, ĉio tio estas statika, ke tuj elŝutebla al via TTT-ejo. Do bildoj, JavaScript, CSS - tiuj specoj de aferoj estas valoraĵoj. Regiloj - ni iras por paroli pli pri kio estas regiloj, modeloj, kaj kampoj en sekundo. Kaj helpantoj estas funkcioj, ke vi povas uzi ĉiujn super via kodo helpi vin fari ion. Funkcioj kiel ensalutinta, por Ekzemple - user.loggedin. Tio estas funkcio kiu probable vi devas uzi en ĉiuj partoj de via apliko. Do vi povas meti iun kiel ke en via helpanto. Mailers - tio estas, se vi tuj sendos retmesaĝon al viaj uzantoj, vi deziras uzi mailer. Kaj modeloj kaj vidpunktojn, ni iras paroli pri tio nun. Do la modelo view adaptilo, jen la bazan fundamenton de Ruby on Reloj, kaj plej kadrojn nuntempe, esti honesta. Do denove, ni disigi cxiujn de nia kodo en tri malsamaj partoj. La modelo - La modelo estas esence la datumbazo. Ĝi manipulas aĵoj en la datumbazo. Do ĉiu tablo en la datumbazo havas respondan dosieron ene de la modelo. Do ĝi estas speco de tabulo por viaj uzantoj. Do vi stokante informojn kiel la nomo de uzanto, iliaj retmesaĝoj, ilia adreso, iliaj pasvorton, kaj aferojn tiel. Vi tuj havos unu dosiero en la modelo nomata uzanto rb - RB por Ruby. Kaj tie vi tuj havos tutan de la metodoj kaj la variabloj. La variabloj tuj respondas al la nomo de uzanto, la retpoŝto, kaj ĉio. Kaj vi tuj havos la metodoj. Ke estos io pri - vi tuj manipuli tiun informon en la datumbazo. Krei modelon kun Rails, vi simple uzas Rails generas. Kaj por krei aĵojn en Rails, vi fakte bezonas la terminalo. Do ĝi estas tre fina bazita kadro. Vi nur ensaluti en la terminalo, kaj do Rails, generi modelo. Kaj la nomo de la modelo estas uzanto. Kaj mi volas nur havi du variabloj, du kolumnoj, en mia tablo. Do jen retpoŝto. Retpoŝto estas tipo kordo. Pasvorto: pasvorto estas ankaŭ tipo kordo. Tiuj estas la solaj du aĵojn. Ĝi estas speco de simplista uzanto tablo. Sed vi povus tute metis centon afero estas tie, se vi volus. Kaj Rails ankaŭ faras ĝin tre, tre simpla por havi ĉiujn specoj de datumbazo rilatoj. Do kutime, kiam vi havas tabelojn en via datenbazo, ili ne estas tre multe sendependa de unu la alian. Ni pensu pri. Vi volas aĉeti kaj vendi produktojn en linio. OK, do vi havas retejon kie vi volas aĉeti kaj vendi produktojn. Do ĉiu uzanto havas multajn produktojn kiuj tiu uzanto pretas vendi. Kaj cxiu uzanto havas ankaŭ multaj transakcioj ke estas daŭranta, aŭ io kiel tio. Kaj la transakcioj estas kun alia uzanto. Ĉiu transakcio apartenas al du malsamaj uzantoj. La uzanto kiu estas aĉeti kaj la uzanto kiu estas vendita. Do tiuj estas la tn datumbaza rilatoj. Kaj ĉi tie ni havas ekzakte tiujn kapvortojn, havas multajn kaj apartenas al. Tiuj estas la plej gravaj. Kaj vi nur intencas diri, ĉar Ekzemple, tio estas la ekzemplo de modelo en la Harvard 2017 retpaĝo. Denove, la lernantoj en ĉi tie - ĉiu lernanto en la retejo, studento estas modelo, estas datumbazo tabelo. Ĉiu studento havis multajn librojn, ĉar vi povus diri, kio estas via plej ŝatata libroj, dekstra. Do ĉiu libro apartenas al studento suben ĉi tien. Kaj atribui atingebla - tio estas nur por diri, tiujn estas la variabloj. Tiuj estas la variabloj atingebla de tiu modelo. Kaj la variabloj estas la aŭtoro de la libro, priskribo, varo, kaj titolo de la libro. Do nur la informo pri la libro. Kaj ĉi tie mi havas metodon kiu simple ordigas ĉion. Do difini kaj fini ĉi tie, tio estas nur dirante: jen mia metodo. Self.sorted_all. Tio simple, donu al mi ĉiun ordo, kaj tiel estas kiel vi apliki la ordiga algoritmo, kio estas sufiĉe facila. Sed esence, jen kiel modelon aspektas kiel, OK. Ĉu iu havas demandojn pri cxi tiu datenbazo afero? Rilatoj? Ĉu tio estas klara? Jes. Spektantaro: Ĉu vi povas fari la varo algoritmon? GABRIEL Guimaraes: La speco algoritmo, OK. Kiam vi kutimiĝas al Rubeno sintakso, ĝi tuj estos libera. Sed esence, elems estas Book.all. Do libro estas la nomo de mia modelo. Kiam vi kreas modelo, ĝi venas kun la ĉiaj belaj metodoj por vi. Do dot.all estas metodo kiu Revenas ĉiuj libroj. Sed trovi, ekzemple, estus serĉi unu libron kaj revenas tiu libro, aŭ io kiel tio. Kaj tiel elems estas ĉio. Kaj Mi nur diras elems.sort. Ordigi estas enkonstruita en Ruby funkcio. Kaj, ĉu ab. Do tio ne denove estas - vi iras por ordigi. Sed vi tuj akiri tiu argumento por mi. Kaj la argumenton uzas - tio estas unu el la malfacila aĵojn en Rubeno reale, cxi tion faru ion. Sed kiam vi komprenas cxion venas tre, tre intuicia. Do la abo, tiu diras la loko posedantoj ke mi tuj uzos - kiel la variabloj Mi tuj uzi, estas tuj nomos a kaj b. Kaj tiuj estas la libroj. Do pro speco bezonas kompari elementoj, memoru, ke? Do kiam vi ordigi aferojn, vi komparu du elementoj. Mi intencas diri ke ĉiufoje vi iras por kompari - tiel ĉi tio estas, mi pasante ordigi argumenton. Kaj la argumento estas ĉio el la do al kaj tie, OK? Kaj tiu argumento, estas simple diri speco kiel kompari. Ordigi funkcius ĉi tie, sed ĝi estus kompari kun ilia default komparante algoritmo. Mi volas tio por kompari en tre specifa vojo, nome, kiam la libro estis kreitaj, kiam ĉiu libro estis kreita. Do mi diras, diri la nomon de la unua libro estas kaj la nomo de la dua libro kiel b, mi volas varon por ordigi io surbaze b.created_at ĉi weird simbolo, a.created_at. Kaj tiu stranga simbolo estas stenografio cxar, se unu estas pli granda ol la aliaj, revenu 1. Se unu estas egala al la aliaj, revenu nulo. Se oni estas pli malgranda ol la aliaj, reveno minus 1. Do jen kion tiu stranga simbolo estas. Sed tio ne estas grava. Mi volas diri, kion mi volas vin infanoj por akiri nun estas la ideo ke datumbazo - vi povas havi la modelo tie. Do vi ne devas zorgi pri konektanta kaj uzante SQL aserto, kaj aferojn tiel. Ĝi povas ankaŭ krei pordojn al SQL injekton kaj ĉiuj specoj de sekureco problemojn. En ĉi tiu kazo, vi ne zorgu pri tio. Vi nur uzu metodojn kiel book.all. Kaj ke, en la fono de kurso, tuj vian datumaron, kaj ĝi estas tuj uzas SQL-komunikaĵo akiri ĉiujn librojn. Sed vi ne devas zorgu pri tio. Tio estas la takeaway, OK? Kaj kiam vi havos belongs_to komunikaĵo kiel tiu, kiu volas diri ke kiam vi havas libron objekton, vi povas vidi, kio estas lia lernanto. Do kiu studento havas tiun libron? Do ni povas simple uzi book.student, kaj kiu donas al vi, kion la studento estas. Kaj tio estas vere prezentas havi. OK, nun la vidon. Do la modelo estas kion interagas kun la datumbazo, right? La vido estas esence HTML, kaj CSS kaj iuj JavaScript. Kaj tio estas kion la uzanto reale vidas. La uzanto ne tuj vidi vian datumbazon. Li tuj vidi iujn datumojn de la datumbaza enigita en la spektanto. Ruby on Rails faras ĝin vere simpla fari kampoj. Unue, ĉar ĝi jam kreas ĝin por vi, el la skatolo, aranĝo. A aranĝo estas esence io, ke - se ĉiuj de viaj paĝoj havas logoon sur supro kaj mi ne scias, iu menuo aŭ io simila al tiu, ke ĉiuj viaj paĝoj kotizon en komuna, tiam vi ne bezonas krei multaj, multaj, multaj HTML dosierojn kie ĉiuj dosieroj havas tiun sama HTML-kodo. Mi volas diri ke estas muta, ĉar vi estas nur ripetante kodo inter malsamaj dosierojn. Tio certe ne estas bona alproksimiĝo. Do Ruby on Rails kreas ĉi aranĝon por vi. Kaj tiu estas nur diras, ĉiuj miaj paĝoj tuj havos ĉi HTML, ĉi kapo titolo ĉi tie, kaj tiuj estas stilo folio ligilo etikedo. Plug tien ĉiujn miajn CSS. Plug tien ĉiujn miajn JavaScript kaj iu meta-etikedoj. Tio estas simple iu kiu ili fari aŭtomate pri vi. Kaj poste, fini la kapon, nun ĉi tie komenciĝas la korpo. Kaj nun ĉi tio estas mia aktuala enhavo. Do, se mi volis meti ion kiel, oni menuo tie, mi metus ĝin ĝuste super ĉi tiun lokon, aŭ ion similan, tiel, ke ĉiuj miaj paĝoj dividis ĝin. Do la aranĝo estas dividita per tuta paĝoj. Nun tiu rendimento tie nur diras, neniu afero kion paĝoj tio estas en, simple ŝtopi en la enhavo de tiu paĝo en ĉi tie, OK? Kaj nun ĉi tio estas, ekzemple, la enhavo de unu paĝo, ke tuj estos konektita al ĉi tiu rendimento komunikaĵo aŭtomate per Rails. Sed tio estas aranĝo dividis per tuta paĝoj. Kaj tio estas ekzemplo de unu paĝo. Kaj tio estas ĝuste la paĝon ke listas ĉiujn librojn. Do tiu estas baza HTML-tabelo supre supro. Do listing libroj, titolo, aŭtoro, priskribo, varon. Kaj tie ni uzas, denove, kelkaj Rubeno sintakso, @ books.each-- @ Ia diras ke via variablo estas tutmonda iusence. Pro tiu variablo estis efektive deklarita en la regilo kiun Vi tuj vidos ĝuste nun. Sed nur preni por donis tiun ĉi @ Libroj estas variablo kiu estas listo de ĉiuj el la libroj. Do books.each, do, kaj denove, ĉi tiu estas nur dirante kiom vi deziras nomumi ĉiu el la iterators tiel ke ni ne devas zorgi pri kvar, int i bla, bla, bla. Ni simple prenu ĉiu el la eroj kaj uzi ilin. Do tiu estas la libro, kaj tiam nur presitaj tie. book.title, book.author, book.description, kaj bla, bla, bla. Kaj ĉi tie estas link_to. Do link_to estas nur ligilo etikedon kiujn uzanto povas alklaki kaj iras al alia retpaĝaro. Link_to, montri ke aparta libro. Do, se la uzanto estas tre interesata en ĉi libron, tiam li povas alklaki spektaklo. Aŭ alklaki redaktu, se li deziras redakti la libron. Aŭ detrui, kvazaŭ li volas forviŝi la libron el la datumbazo. OK, ĉu tio sencas? Bona. Fine, la regilo. Do esence la regilo estas la interfaco inter la modelo kaj la vido. Do la modelo estas la parto de via kodo kiu havas datumbazon - ĉiun tablon en la datumbazo devas respektiva dosiero en la modelo, kaj tiel plu. Kaj kiamaniere fari la modelon kaj la vido interagi? Do, per la regilo. Kio controlador faras estas ĝi la modelon por iu kiel, ekzemple, meti ĉiuj la libron enen de variablo. Kiel ĉi tiu, @ libroj. Kaj ĝi devas esti tutmonda kun ĉi ĉe afero ĉar ĝi tuj estos alirita per la vido. Oni ne tuj estos uzata ene la regilo mem. Kaj tio nur prokrastas informoj la vido estas tuj uzi. Ekzemple, la regilo ĉekojn se la uzanto estas en linio. Kaj kiom ghi faru tion? Ĝi fakte demandas la modelon ĉar la modelo havas la informon pri la uzanto. Ĝi havas uzantojn tablo, la libroj tablo, aliaj tabloj. Do la regilo demandas se la uzanto estas en linio. Se la uzanto estas en linio, la regilo manipulas aferojn kiel meti biskviton, aŭ ion similan, por meti la stampon diri, ke la uzanto estas en linio. Neniu bezono reensaluti. Kaj tio okazas ŝargi variablon nomitan uzanto, ekzemple, ke la vidpunkto povas uzi. Kaj la vido povas enmeti ion tie, ekzemple, bonvenigas user.name. Do ĝi estas dironta, bonvenon Johano, bonvenon Jakobo - iel simile, ĉu ne? Do ĉiu el tiuj variabloj uzis en la vidpunkto tuj ŝarĝita en la adaptilo kaj tuj estos tiris supren for de la modelo. Tiu estas la ekzemplo de controlador. Do ni havas, esence, ĉiu - ni nomas tiujn aferojn agoj. Do indekso estas ago. Ĝi estas Rubeno funkcio. Ĝi estas Rubeno metodo en tie. Sed por la regilo alvokoj tiuj aferoj agoj. Kaj ĉiu ago estas rilatanta al a itinero. Do jen tiu vojo, ekzemple, Estas get komunikaĵo / libroj. Do, se vi iros al harvard2017.com/books, kio okazos estas jena kodo tuj estos nomata. Kaj ekzistas dosiero - lasu min malfermi tiun realan rapida. Ekzistas dosiero nomata kruda dosiero. Tio ne malfermante. Do tie estas dosiero nomata kruda dosieron kiu esence kongruas - ho, nun ĝi estas la malfermo. Tie, itineroj. Do esence kongruas streĉadon, aktivigo / novaj por ekzemplo, por io en la regilo. Do tie estas tio regilo nomata aktivigo adaptilo, sed ĉi tie, ni havas la librojn, ekzemple. Do matches - libroj / nova, la regilo libroj, la ago estas nova. Do esence tre simpla aĵoj. Kaj tie, se vi havis por akiri / libroj, oblikvo la ID de la libroj, oblikvo nova, Vi tuj iros al tiu Rubeno metodo tie malsupre. Do jen, kio estas tiu indekso estas faranta Estas simple ŝarĝi libro ŝtipo. Tio estas io kion - Mi log ĉiuj libroj en la protokolo. Kaj ordigi ĉion. Do tiu tuj revenos ĉiuj ordo libroj. Jen, denove, en la datumbazo. Do tiu estas metodo de la modelo. Vi vidis, tiu metodo estas kreitaj en la modelo. Nun tiu estas simple ŝarĝi ĉiuj libroj kaj metante ke en variablo kiu povas vidi per la vido. Ĉar vi ne povas, en la mezo de vian HTML-kodon, vi ne povas nomi io rekte de la modelo, ĉar por du kialoj. Unue, pro sekurecaj kialoj, ĉar ĝi ne estas vere interesa esti ŝarĝi informojn rekte interne ĉiun HTML kiu estas en la datumbazo. Kaj due, por konservi vian kodo vere organizita. Do disigi precize diversaj partoj. Do BookLog.sorted_all, tio en la datumbazo kaj tiu tuj metis en variablo @ libroj. Kaj jen cxi tiu variablo estas atingebla ene de viaj HTML-kodo. Do vi povas simple meti cxiujn el la libroj tie gxuste kiel ni faris, ĝuste ĉi tie. Tiu estas la variablo. Kaj vizitoj respond_to fari | formato |, ĉi tio estas nur speco de Rubeno sintakson por se la uzanto estas demandi min por HTML-kodo, mi tuj respondi kun HTML-kodo. Se la uzanto demandas min per JSON kodo, kio estas iu kiu ttt apps uzi komuniki inter si, ili kutime uzas JSON aŭ iuj aliaj speco de afero. Do ĝuste respondas uzante tiujn du malsamaj formatoj. Sed por normala uzanto, tiu ne bezonus esti ĉi tie. Vi povus simple respondi per HTML, kaj tio estas bone. Do ne vere timas ke multe pri ĉi tio. Tio estas la sola linio de kodo en nia kontrolon kiel ĝi estas ŝargado de HTML datenbazo, metante en iun kiu estas atingebla per la vido. Kaj tiam nova, do ĉi tie Mi kreas librojn. Sed krei librojn, mi bezonas studento ĉar mi bezonas scii la lernanto kies librojn ĉi aparteni, dekstra. Do @ studento = Studento. Studento, denove, ni komencante per grandan S estas la modelo studento. OK, do ĉi tiu estas la modelo studento, tio estas la modelo libro ŝtipo. Student.find, do mi iros por trovi studento uzanta la parametrojn ID. params.id, tiu estas justa akiri al mi la valoron de tiu ID kiu pasis - kaj la retadreson. Nur tuj serĉi ke lernanto. Kaj unue, ni tuj kontroli se la lernanto havas iujn kantojn kaj bla, bla, bla. Kaj tio jam manipulas la kazo kiam la lernanto ne ekzistas, ekzemple. Kaj tiam, alikaze, ni simple respondi al la samon uzante HTML. Kaj tiam ni povas lasi la uzanton krei iliajn kantojn. Do ĉi estas nova. Novaj estas kutime uzata por, lasu la uzanton krei ion. Kaj poste jen mia krei ago tio estas kutime uzata por - efektive metis la kantojn en la datumbazo aŭ io kiel tio. Sed iam vi komencos uzi Rails, tiuj aferoj tuj estos multe, multe pli klara. OK, malvarmigi. Demandojn ĝis nun? Ĉu ĝi havas sencon kun regiloj, modelojn, kampoj - yeah? Denove en via Rails apliko - do ĉiuj kiuj povas esti trovita en ĉi tie. Do vi havas app, regiloj, tiuj estas ĉiuj miaj regiloj. Do ekzemple, libroj kontroli. Tio estas tiu, kiun ni ĵus vidis. Kaj tiam vidpunktoj. Kaj ĉiu regilo havas asociita vidpunkto, ĉu ne? Do aŭtomate kiam vi nomas tiun indekso tie, ekzemple, aŭ kiam vi nomas tiun libroj nova, tiam la vidado, libroj, nova tuj nomos. Do Rails faras ĉiu aŭtomate por vi. Do ĉiu regilo estas asociita rigardi kaj ĉiuj de la modeloj - ĉi tie mi havas unu, du, tri, kvar, kvin modelojn. Sed tio estas studento modelo, tial tiujn estas la variablo, ke ĉiuj studentoj havas - lokaligo, dato de la naskiĝo. Lernantoj estas iomete pli komplika, ĉar ĉiu lernanto havas pli malsama metodo asociitaj al ĝi. Sed tio estas nur la uzado de la tablo, kiu havis la tutan lernantoj en la datumbazo. Kaj, bone, instali Rails. Instalado Rails, por esti honesta, ne estas la plej simpla afero. Sed iam vi ricevas pasinteco ĉio, ĝi estas tre, tre facila. Do instali Rails, vi simple iru al la TTT-ejo, rubyandrails.org / download kaj sekvi siajn instrukciojn tie. Elŝuti ĉion. Kaj vi povas fari tion aŭ en Aparato, en la CS50 Aparato, sur Fenestroj, sur Mac, aŭ iu ajn mastruma sistemo de via elekto. Ruby on Rails kuras al ĉio. Malakordo vi jam Rubeno instalita se vi havas Mac aŭ - en la aparatojn mi pensas Rubeno estas - Mi ne estas certa. Kaj tiam vi simple havas ĉi instalita. Kaj se vi volas krei novan apliko retejo, kiun vi ĵus fari Rails, novaj, blogo. Rails, novaj - Mi ne scias - la nomo de via retejo. Kaj estas, ke simpla. Ĝi okazas krei ĉiuj el tiuj dosierojn Mi nur montris vin. Sed la modelo, la vido, kaj la adaptilo ne tuj estos popolita ankoraŭ. Vi simple tuj devos iri tien kaj popoli tiuj tri dosierujoj. Do probablo estas, ke vi volas krei modelon, ekzemple, apliki unu modeligi unue. Do denove, ĉiam provas mordi malgrandaj bitojn de problemo samtempe. Kaj do ni diru, krei modelon por viaj uzantoj. Tio estas la unua aĵo se vi havas uzantojn. Do mi volas krei modelon ĝuste kiel ni montris tie. Rails, generi, modelo, uzanto, kaj poste retmesaĝoj kordo - ni havas tiun ĉi tie. Kaj ĝuste krei tiun modelon, jes. Rails generi modelo Uzanto retadreso: kordo pasvorto: kordo. Kaj tiam vi krei adaptilo kiu traktas la uzanto. Kaj vi povas krei novajn uzantojn kaj do tiuj specoj de aferoj. Kaj tiam vi povas movi al la kreo la resto de via paĝo. Cool, demandoj? Jes. Spektantaro: [inaudibles] GABRIEL Guimaraes: Jes, jes, vi definitive devas iri en la vido. Tio estas tre bona demando. Do la vido estas kio reale enhavas via HTML. Do tio estas kion la uzantoj tuj vidas. Denove, ĉi tie, tio ĉi estas Ekzemplo de vido. Ĝi havas la HTML kodo kaj Ruby kodo samtempe. Do la Rubeno kodo estas tie meti aĵojn el la datumbazo, ekzemple, kiuj estis ŝarĝita en la regilo. Por ke variablo @ librojn, ekzemple, havas cxiujn el la libroj kaj la tablo libroj en la datumbazo. Ni certigis ke ĝi havis en la regilo. Kaj la vido - ĉiu el la paĝojn sur via retejo estas tuj havos unu asociita vido. Do se vi iras al la ĉefa paĝo, la tre unua paĝo, harvard2017.com. Tio montras unu paĝo. Kaj tiam vi iru al oblikvo profilo. Tio tuj iros al controlador tio estas profilon regilo. Kaj la profilon regilo tuj doni al vi la profilon vido. Kaj la profilon view tuj serĉos iom simile al tio, sed ĝi tuj havas informon pri la uzanto, kaj ne pri la libroj. Do estas HTML-kodo, kaj css kaj tiuj aferoj kiujn uzanto vidos kun la Rubeno kodo - ke efektive ĝi presas tion el la datumbazo. Ĉu tio estas pli klara? Mi esperas. Spektantaro: La HTML kodo uzas por efektive faras la retejo, ke la uzanto vidas, sed la Rubeno kodo kion faras la retejo laboro? GABRIEL Guimaraes: La Rubeno kodo prenas konvertita al HTML. Do kio estas la uzanto ricevas Estas nur HTML, OK? Ĝi estas nur HTML. Ĉi book.title tuj konverti al la valoro de book.title en HTML, OK. Do tio estas tute en la servilo, kaj tiel tio dependas de kio libroj estas tie en la servilo aktuale. Sed kion la servilo farus tuj senco estas nur HTML-kodo, OK. Sed la opinio simple donas la aranĝo de kion la HTML tuj aspekti kaj kia la variabloj tuj estos. Tiu speco de print out, OK. Tiuj aferoj estas esence presi elsendoj. Ili tuj presi variabloj, OK. Do kio estas nur HTML, tiuj - aŭtoro, titolo, priskribo. Tio estas statika enhavo. Tio ne tuj ŝanĝu. Tio estas nur ordinaraj HTML-kodo. Tiuj estas la presita elsendoj por variabloj - aferoj kiuj dependas. Cool, pli demandojn? Bonan? Jes. Spektantaro: Mi opinias ke vi estis farantaj la tutan la eldono en malsama teksto redaktado programo. Ĉu ni ankaŭ elŝuti, ke? GABRIEL Guimaraes: Jes, mi ŝatas ĉi tekstoredaktilo nomata TextMate. Kaj ĝi estas vere bona. Ĝi estas bone adaptita al Ruby. Ĝi koloroj aferojn tre bonorde. Do TextMate, T-E-X-T. Mi iras meti tiun, hold on - Mi volas diri al vi povas uzi gedit aŭ io vi deziras. Sed tio estas specifa por Mac, kaj ĉi Estas vere neta ĉar ĝi metas ĉiujn viajn dosierojn tie. Kaj en Ruby on Rails, vi bezonos interŝanĝi dosierojn multon. Do ĝi estas multajn, multajn dosierojn simple iri de unu dosiero, salti al unu dosiero aŭ la alia. Do TextMate estas tre bona, sed trovigxas multaj el tie. Pli demandojn? OK, jes? Spektantaro: Is there a mobile evoluo per Ruby on Rails? GABRIEL Guimaraes: Mi havas aŭdis pri tio. Mi ne uzas ilin. Vi povus esplori plu pri tio. Mi ne certas se estas ia bona afero por tie. OK, jes? Spektantaro: [inaudibles] GABRIEL Guimaraes: Not Rails, verŝajne Rubeno tabelo. Malfermu terminalo fenestro kaj tipon: "Ruby". Jes, probable, kaj tiam vi Nur oni devas instali Rails. Sed se vi iras por instali la novan Rails 4.0, kiun mi tre rekomendas: vi devus elŝuti Rubeno 2.0. Tio estas la nova tro. Kaj la nova Rails 4.0 havas ion vere malvarmeta ke faras al la aktivoj. Ĝi manipulas aktivoj. Aktiva denove estas bildoj, CSS dosieroj, kaj JavaScript dosierojn. Do oni vere neta afero ke Ruby on Rails faras por vi, estas ĉiuj el tiuj CSS dosierojn kiujn vi posedas kaj ĉiu - ĝi simple pakaĵoj ĉio en unu grandega dosiero, sen spacoj aŭ ion, minimumigi la tempo la uzanto bezonas elŝuti ke kodo de via servilo. Do kiam vi vidas en via komputilo, ĝi estas tuj havos kiel 15 CSS-dosierojn. Aŭ multaj, multaj malsamaj CSS-dosierojn. Sed je la fino de la tago, kio Rails aŭtomate faras por vi, estas gxi metas ĉio kune en unu grandegan dosieron tiel ke ĝi minimumigas la peto tempo. Tio estas vere genia. Jes? Spektantaro: [inaudibles] GABRIEL Guimaraes: Ekzakte. Do, Google Maps integriĝo. Tio estas JavaScript API de Google. Do mi ĵus iris al la Google-retejon. Ili havas tiun de Google Maps API kaj mi elŝutis la kodo kaj integris en mian vidpunkton. Do kion mi bezonis fari tie estas mi bezonis por akiri la lokoj de la datumbazo. Tio estis farita en la regilo. Do mi iris al la regilo - kie estas la regilo. La regilo aspektis kiel ĉi tio. Got ĉiuj lokoj de la studentoj, metis ĉiun el kiuj en grandan variablo, granda listo, ke havas ĉiuj lokoj. Kaj en la vido, ĉar la Javascript API Estas io en la rigardi, ĉu ne? Ĉar JavaScript kuras ene de via HTML kodo, ĝi tuj estos sendita al la uzanto maŝino. Kaj en la vido, mi ŝarĝis la tuta de tiu informon en la Google-API. Kaj tio faris ĉiuj, ke pro al mi, kiu estas vere genia. Sed se vi volas uzi tion por la back-fino, kaj estas kvazaŭ biblioteko, por Ekzemple, denove - la integriĝo kun Facebook. Tio estas io kion multaj, multaj, multaj aplikoj uzas nuntempe. Do havi vian integriĝo kun Facebook ĉar ĝi estas tiel multe pli facile ĝuste ensalutu per Facebook ol krei konton kaj bla, bla, bla. Tiam vi simple uzu gemo kaj tio estas tiel simpla kiel iri al via gemo dosiero. Gem dosiero estas dosiero nomata gemo dosieron la fonta dosierujo de via Ruby on Rails projekto. Nur iru tien kaj aldoni novajn gemo. Kaj vi rigardas ĝin en Google. Estas multaj, multaj, multaj gemoj. Ekzistas unu, kiu specife faras ĉi Facebook integriĝo. Mi ne certas kio estas la nomo de ĝi. Nur Guglas kaj vi estas tuj trovi ĝin. OK, pli da demandoj? Awesome, dankon pro via vizito.