GABRIEL GUIMARAES: Questo è CS50. Benvenuti a stupefacenti Web Apps con Ruby on Rails. Quindi, per chiunque sia interessato a web sviluppo e preparazione di siti web, web applicazioni, Ruby on Rails è questo strumento incredibile che Twitter, GitHub, Groupon, e ogni sorta di veramente bello, e grande, le applicazioni web stanno utilizzando in degli ultimi anni. Ed è davvero, davvero cool caratteristica, un freddo strumento, perché è nuovo. Così ha tutto il nuovo e potente tecnologie integrate nelle framework che consente di affrontare con ogni sorta di cose incredibili. Ma che cos'è un quadro? Quindi un quadro è sostanzialmente qualcosa che crea - quando si avvia un sito web, se hai iniziato da zero, come si apre Gedit lì, e si vuole codificare tutto del codice HTML e il codice di tutti i tuoi PHP, tutto il vostro CSS, tutto da zero - questo è solo sarà un sacco di lavoro. E un quadro ti dà letteralmente metà del sito già fatto. Quindi si inizia con la metà di un sito web che ha tutto quello che c'è per voi. Come le connessioni al database, e tutti tipi di cose che si devono preoccuparsi merito se si sta facendo da zero, non dovete preoccuparvi di quelli dettagli di basso livello. Ma oggi stiamo andando ad esportare una delle i siti che la matricola del classe del 2017 sono probabilmente familiarità. Quindi questo sito è il sito che ho ha fatto per la nostra classe durante l'estate. Era un sito web dove gli studenti di la classe del 2017 potrebbe accedere e interagire tra loro. E poi questa è una mappa - tutti, dove le persone sono. E abbiamo avuto un gioco libro, un gioco di canzoni dove abbiamo visto le canzoni delle persone e Libri delle persone. Quello che piace leggere, cosa a loro piace ascoltare. E la parte più interessante è che letteralmente mi ci sono voluti tre ore codificare tutto. Perché se dovessi fare tutto da zero, come aprire gedit, è probabilmente hanno preso me 20, 30 ore. Ma con Ruby on Rails, perché tutto era già impostato per me, mi ci sono voluti solo tre o quattro ore, o qualcosa di simile. Così che cosa è Ruby on Rails. Ruby on Rails, ancora una volta come abbiamo già detto, è un quadro. Questa è una foto di un quadro. Quindi hai intenzione di iniziare a costruire una casa, avete già la metà del casa fatto. Questo è il quadro. E Ruby on Rails è esattamente così. E si dovrebbe pensare ad esso come, si inizia un sito web, si avvia il web applicazione, abbiamo già metà fatto lì. Ma prima di tutto, che cosa è Ruby? Ruby on Rails usa la vista del modello regolatore, che è paradigma, che è davvero interessante - e tutte le applicazioni oggi usare qualcosa di simile. Questa idea di separare le cose in tre parti, il modello, la vista, e il controllore. Stiamo per parlare un po ' parleremo più avanti. In primo luogo, che cosa è Ruby? Quindi questo è Ruby. E questo è il simbolo della linguaggio chiamato Ruby. Ruby è uno dei newish interpretati lingue, così lo script. E 'una lingua che non è compilato come C. E 'compilato in fuga. Quindi questo è un bene, perché, proprio come PHP, per esempio, è anche interpretato, è non compilato. Questo è un bene perché il suo portatile. Quindi basta passare il codice da una macchina all'altra. Da una macchina Linux, per Windows macchina ad una macchina Mac o Apple, o qualcosa di simile. E non c'è bisogno di preoccuparsi dettagli riguardanti ciascuna delle specifiche sistemi operativi. Sta andando a lavorare ovunque. E Ruby è un linguaggio che - voi ragazzi ricordano probabilmente questo. La gente usa la funzione hash implementata in C per la tabella hash la settimana scorsa e aveva tutti i tipi di segmentation fault. E poi le cose preoccuparsi se che stringa i lì, l'ho stringa qui, è stato effettivamente in minuscolo o maiuscolo, o questo tipo di preoccupante dettagli di basso livello. Bene in Ruby, se si desidera implementare una tabella di hash, questo è esattamente come si creare una tabella hash. Tu dici, dizionario, questo è il nome della mia variabile, = "Hash.new". E poi dizionario ["pippo"], e quando sono aggiungendo foo alla mia tabella di hash, sono solo dicendo foo è lì. E poi se volevo controllare se foo era lì, dico solo se dizionario ["foo"] == true return true. Whoa, e questa è la vostra tabella di hash. Questo è l'attuazione della tabella hash in Ruby. Così tutti voluto che potrebbero avere usato qualcosa come Ruby per ultimo pset settimana, giusto? Abbiamo tutta una serie di ragioni per voler per usare un linguaggio come Ruby. Ruby ha gemme. Gem è un nome per un genere della biblioteca in Ruby. Quindi tutta una serie di caratteristiche interessanti che si può avere, per esempio, se io voler integrare la mia domanda. Che Harvard 2.017 applicazioni è stato integrato a Facebook. Così si potrebbe accedere, via Facebook, per l'applicazione. Quindi, se avete intenzione di farlo, non è necessario necessario preoccuparsi di inviare alcuni Richiesta HTTP a Facebook, e in attesa per la risposta, e costringendo l' risposta, e bla, bla, bla. Basta scaricare la gemma che fa tutto questo per voi. E allora non c'è bisogno di preoccuparsi di tutto questo. E poi un sacco di aiuto on-line, naturalmente. Ci sono molti, molti, molti siti web che stanno per aiutarvi entrambi con Ruby e con Rails. Ed è molto divertente al codice. Proprio perché si può smettere di preoccuparsi in merito a questi problemi non è così divertente. Come se qualcosa è minuscolo o maiuscolo, e poi perché è questo dando un errore di segmentazione e si può veramente immergersi nel molto roba interessante. Per immergersi nei problemi davvero cool. Così Ruby è proprio come a C in un certo senso. Quindi non sarà che grande di un salto in realtà. Quindi mette, che è la nostra applicazione di stampa in Ruby. Penso che si potrebbe usare la stampa troppo, ma mette è quello che usa tutti. Quindi, solo mette "Ciao Mondo". Si potrebbe, o non potrebbe, avere la parentesi circonda "Ciao Mondo" lì. Si può solo scegliere se o non utilizzare questo. Quindi x = "1". Un ciclo while sembra piuttosto molto lo stesso. Ha poco meno di sintassi. E 'una specie di detergente un po'. E poi se x> 25 puts "Big!" e altro mette "Small ...". Ed è una specie di C in questo senso. Quindi, se si guarda a questo, è possibile approccio probabilmente capire tutto quello che sta succedendo. Ma è più potente. Più potente perché, più di questo, Si può fare cose non sono che - una sorta di hackage un po '. In C non si poteva fare in fare solo con una linea. Ad esempio, mette "Io sono # {x}". Questo è solo sintassi per inserire il valore di x qui, e non stampare la carattere x. In C si doveva fare la percentuale d, e poi mettere la variabile x dopo l' la virgola qui, o qualcosa di simile. E in Ruby c'è una scorciatoia solo per farlo. E mette questo, se x> 3, in modo da poter mettere il se tutti su una sola riga. E poi una lista. Liste in C, come un array, deve tenere traccia di quanto è grande la tua matrice è o altrimenti si ottiene una segmentazione colpa. La tua matrice è un solo tipo. Quindi è sia un array di carica o un array di interi. In questo caso, ho creato una lista qui, che è una matrice, che ha la prima elemento è una stringa, John, e poi quattro, due - quelli sono numeri interi. E poi ho aggiungo, lista, Angolo Sinistra Staffa, Sinistra Staffa angolare, tre. Questo significa solo accodare qualcosa alla mia lista. Quindi è una specie di più interessante perché se voleste usare questo come solo un semplice elenco di numeri interi, si potrebbe, totalmente. Questo è totalmente soddisfacente. Basta mettere interi lì. Ma se si voleva fare qualcosa che è più convincente, che ha altri cose, che ha - Non lo so, tutti i tipi di elenchi lì, o altri oggetti che sono più interessante, si può assolutamente farlo. E 'tutto bene. E poi se si vuole scorrere l'elenco, si potrebbe utilizzare il più C-ish tipo di approccio. Questo è per ciclo, di avviare una variabile, i = "1", o i = "0". E poi si va, e iterazioni, e ottenere tutti gli elementi. Ma si potrebbe anche usare questo approccio più Ruby-like. Questo è solo come un list.each. Questo è solo dicendo, mi ritorno tutti gli elementi della lista. E che fare con ogni elemento, chiamarli elem. Quindi questo è solo un nome che io sono dando ad ogni elemento. E ora questo sta per ripetere per tutti gli elementi, e elem, sta andando essere il modo in cui accediamo quel singolo elemento. Così si potrebbe assolutamente attenersi al Approccio C, ma questo funziona anche. Ed è esattamente la stessa cosa, OK. E a parte questo, è davvero, veramente facile da integrare Ruby e HTML poiché voi siete interessati in applicazioni web. HTML è sicuramente qualcosa che avete intenzione di usare un sacco. E qui se si voleva mettere Rubino in HTML, basta iniziare qui, <%. Ciò significa che, qui di Ruby comincia. E poi%>, un po 'come PHP in questo senso. Qui Rubino finisce e poi si può basta mettere il vostro caso in qui. E poi ho qualche variabile user.logged_in. In Ruby, di solito aggiungiamo quelli, sia punto interrogativo o esclamativo segno, come un personaggio banca, solo per tipo di distinguere tra le nostre funzioni. Ma basta mettere che per il tuo bene. Non è qualcosa che cambia nulla nella funzionalità. Quindi, solo per ricordare a me che questa è una funzione - e le funzioni in Ruby, invece di C, come ho già detto, non hanno bisogno delle parentesi. Quindi, che ha registrato in cosa, che è una funzione, che è un metodo. Ma non in modo esplicito è necessario mettere le parentesi in là. Quindi, solo chiedendo se l'utente ha effettuato l'accesso, e se l'utente ha effettuato l'accesso, ora HTML ricomincia. Quindi benvenuto, e qui Stampa la user.name. E questo è tutto. Ecco, questo è piuttosto semplice, come integrare rubino con codice HTML. E le risorse, come ho detto, ci sono tutti i tipi di risorse per Ruby. Voi potete guardare tutto questo in su dopo perché sia ​​il video, e le diapositive, stanno per essere disponibili online. E ora cerchiamo di entrare in Rails. Rails è amore. Rails - così Ruby è il suo linguaggio. OK, proprio come PHP, proprio come Python. E 'un linguaggio di alto livello, non come C. Una via di mezzo, linguaggio di basso livello di C in il senso che Ruby non si deve preoccuparsi della memoria riallocazione e puntatori, e questo tipo di cose. Ma Rails è questo programma che è stato scritto in Ruby. E utilizza rubino, al fine di avere questa quadro, per voi essere in grado di costruire applicazioni web impressionante. Quindi bisogna prima installare Ruby on la vostra macchina, ma la maggior parte delle macchine già che. E quindi installare apparati su di esso. Stiamo andando a parlare più avanti. E perché Rails? Quindi MVC, che è il controllore vista del modello abbiamo parlato un po ' bit, rende tutto più semplice perché divide cose che sono concettualmente diverso in diversi parti dell'applicazione. Meno tempo speso sui problemi di basso livello, di nuovo, e molto, molto popolare in questo momento. Quindi per tutti coloro che sono interessati a la scena start up, o in qualcosa come iniziare le imprese, e le persone nel mercato della tecnologia che sono iniziare la propria attività in questo momento sono davvero, davvero appassionati di Ruby on Rails perché è così veloce. Così si può ottenere qualcosa di attivo e funzionante in meno di un giorno, e questo è davvero molto interessante argomento per usare Ruby. E Rails 4.0 - è molto fresco dal forno momento. Così Rails 4.0 - Penso che la prima release fu nel marzo di quest'anno. Ed è davvero bello, ha tutto tipi di nuove funzioni interessanti. Così Ruby on Rails è un framework che è costantemente aggiornato per avere tutte della nuova tecnologia. La prima volta che ho provato ad usare Ruby on Rails, ho avuto questo problema perché creato la mia prima applicazione web, e sembrava esattamente così. Così si crea tutti i file per te, e non avevo idea di cosa - che cosa è questo? Ha creato tutti quei file, e io solo ha voluto creare un semplice programma, una semplice sito HTML. E io non riuscivo nemmeno a fare nulla. Quindi ero un po 'sopraffatta. Ma questa è una delle cose che una volta si capisce, tutto diventa così molto più chiara. Quindi non essere sopraffatti dal primo vista di ciò che si crea in un primo momento. Quindi quello che succede è Rails crea tutti quei file. Così uno dei cioè doc, documentazione. Db, che è legato al database. Lib, che sta librerie log. Pubblico, sceneggiatura, e alcune cose. Praticamente tutto si sta andando a preoccuparsi circa è la cartella app, lassù. Questa è la cartella che contiene l'applicazione. Tutti gli altri file - alcuni di loro sono importanti, e sei andando a conoscere più avanti. Ma sono qui solo per contenere il quadro. Così i primi capisaldi della casa voi state costruendo, OK? Ma la cartella app - che è quello veramente importante. E la cartella applicazione ha beni. Le attività è praticamente tutto che sta arrivando. Immagini per esempio, tutto ciò che è statico che sta per essere scaricato al tuo sito web. Così le immagini, JavaScript, CSS - questo tipo di cose sono beni. Controllori - stiamo andando a chiacchierare quali sono i controllori, i modelli, e campi in un secondo. E helper sono funzioni che può usare su tutto il codice per aiutarvi a fare qualcosa. Funzioni come connessi, per esempio - user.loggedin. Questa è una funzione che probabilmente dovrà utilizzare in tutte le parti del applicazione. Così si può mettere qualcosa di simile che nel vostro aiutante. Buste - che, se avete intenzione di inviare una e-mail agli utenti, è desidera utilizzare un mailer. E i modelli e punti di vista, stiamo andando per parlare di questo adesso. Quindi il controllore vista del modello, che è la pietra angolare di base di Ruby on Rails, e la maggior parte dei quadri al giorno d'oggi, ad essere onesti. Così ancora una volta, ci separiamo tutti del nostro codice in tre parti differenti. Il modello - il modello è fondamentalmente il database. Gestisce cose nel database. Così ogni tabella nel database ha un corrispondente file all'interno del modello. Quindi è una specie di tavola per gli utenti. Quindi stai memorizzazione delle informazioni come l' nome utente, le loro e-mail, la loro indirizzo, la password, e cose del genere. Stai andando ad avere un file in il modello chiamato rb utente - rb per Ruby. E ci si sta andando ad avere tutto dei metodi e le variabili. Le variabili stanno per corrispondenza per il nome utente, la posta elettronica, e tutto. E si sta andando ad avere i metodi. Che sarà qualcosa che riguarda - si sta andando a gestire queste informazioni nel database. Per creare un modello con Rails, si utilizza solo Rails generano. E per creare le cose in Rails, è effettivamente bisogno il terminale. Quindi è un terminale quadro basato. Basta accedere nel terminale, e do Rails, generare il modello. E il nome del modello è user. E voglio solo avere due variabili, due colonne, nella mia tabella. Ecco, questo è email. La posta elettronica è una stringa tipo. Password, la password è anche una stringa tipo. Queste sono le uniche due cose. E 'una specie di tabella utente semplicistico. Ma si potrebbe assolutamente mettere un centinaio di cosa c'è se si voleva. E Rails rende anche molto, molto semplice per avere tutti tipi di relazioni di database. Così, di solito, quando hai le tabelle nel vostro di database, non sono molto indipendenti l'uno dall'altro. Pensiamoci. Vuoi acquistare e vendere prodotti online. OK, in modo da avere un sito web dove si desidera acquistare e vendere prodotti. Quindi, ogni utente ha molti prodotti che l'utente è disposto a vendere. E ogni utente ha anche molte transazioni che sono in corso, o qualcosa di simile. E le transazioni sono con un altro utente. Ogni transazione appartiene a due utenti diversi. L'utente che sta acquistando e l'utente che sta vendendo. Così quelli sono i cosiddetti relazioni di database. E qui abbiamo esattamente tali parole chiave, ha molti e appartiene a. Questi sono i più importanti. E si sta solo andando a dire, per esempio, questo è l'esempio di un modello nel 2017 sito di Harvard. Anche in questo caso, gli studenti di qui - ogni studente sul sito, studente è un modello, è una tabella di database. Ogni studente aveva molti libri perché si poteva dire, quali sono il tuo preferito libri, a destra. Così ogni libro appartiene a uno studente qui. E attributo accessibili - che sta solo dicendo, quelli sono le variabili. Queste sono le variabili accessibili da questo modello. E le variabili sono l'autore di il libro, la descrizione, genere, e titolo del libro. Quindi solo le informazioni per quanto riguarda il libro. E qui ho un metodo che ordina semplicemente tutto. Così definiscono e finiscono qui, questo è solo dicendo, ecco che arriva il mio metodo. Self.sorted_all. Questo è solo, mi danno tutto risolto, ed è così che si implementa l'algoritmo di ordinamento, che è abbastanza facile. Ma in fondo, questo è il modo un modello assomiglia, OK. Qualcuno ha domande relative questa cosa database? Relazioni? È chiaro? Sì. PUBBLICO: Si può fare l'algoritmo di ordinamento? GABRIEL GUIMARAES: L' algoritmo di ordinamento, OK. Quando ci si abitua alla sintassi Ruby, che sta per essere chiari. Ma in fondo, elems è Book.all. Così il libro è il nome del mio modello. Quando si crea un modello, si tratta con tutti i tipi di metodi belle per voi. Quindi dot.all è un metodo che restituisce tutti i libri. Ma trovare, per esempio, sarebbe cercare un libro e restituire quel libro, o qualcosa di simile. E così elems è tutto. E io sto solo dicendo elems.sort. Sort è una funzione built-in Ruby. E, fare ab. Quindi questo do è di nuovo - avete intenzione di ordinare. Ma si sta andando ad ottenere questo argomento per me. E l'argomento utilizza - questa è una delle le cose più difficili in Ruby in realtà, questo fa cosa. Ma una volta che hai capito tutto viene molto, molto intuitivo. Così l'ab, questo sta dicendo il posto titolari che ho intenzione di utilizzare - come le variabili ho intenzione di usare, sono sta per essere chiamato a e b. E questi sono i libri. Quindi perché ordinamento deve confrontare elementi, ricordate che? Così, quando si ordinano cose, confrontare due elementi. Io vado a dire che ogni volta si sta andando a confrontare - quindi questo è, sto passando per ordinare un argomento. E l'argomento è tutto da do a e qui, OK? E questo argomento, è solo dicendo ordinamento come confrontare. Ordina sarebbe lavorare qui, ma potrebbe confrontare con il loro di default il confronto algoritmo. Voglio che confrontare in modo molto specifico modo, cioè, quando il libro è stato creato, quando ogni il libro è stato creato. Così sto dicendo, dire il nome del primo è un libro e il nome del secondo libro come b, voglio sort per ordinare qualcosa sulla base di questo b.created_at Simbolo strano, a.created_at. E quel simbolo strano è l'abbreviazione perché se uno è più grande di altro, ritorno 1. Se uno è uguale alla altro, restituire zero. Se uno è più piccolo del altro, il ritorno meno 1. Ecco che cosa quel simbolo strana è. Ma questo non è importante. Voglio dire, quello che voglio voi ragazzi per ottenere ora è l'idea che del database - si può avere il modello lì. Quindi non dovete preoccuparvi di collegare ed utilizzare un'istruzione SQL, e cose del genere. Si può anche creare porte SQL injection e tutti tipi di problemi di sicurezza. In questo caso, non è necessario preoccupare di questo. Basta usare metodi come book.all. E che, in background naturalmente, sta per il database, ed è andando ad utilizzare un'istruzione SQL per ottenere tutti i libri. Ma non c'è bisogno di preoccupare di questo. Questo è il takeaway, OK? E quando si ha una dichiarazione belongs_to come questo, il che significa che una volta che hai un oggetto libro, può vedere qual è il suo allievo. Quindi, quale studente ha questo libro? Così possiamo semplicemente usare book.student, e che ti dà ciò che lo studente sia. E questo è davvero caratteristica di avere. OK, ora la vista. Quindi il modello è quello che interagisce con il database, giusto? La vista è fondamentalmente HTML, e CSS, ed alcuni JavaScript. Ed è quello che l'utente in realtà vede. L'utente non ha intenzione di consultare il database. Sta a vedere alcuni dati dal database integrato nel visualizzatore. Ruby on Rails rende davvero di semplice realizzazione campi. In primo luogo, perché crea già lo per voi, fuori dalla scatola, un layout. Un layout è fondamentalmente qualcosa che - se tutte le pagine hanno un logo sulla parte superiore e, non so, qualche menu o qualcosa di simile, che tutte le pagine quota in comune, allora non necessario creare molti, molti, molti HTML file dove tutti i file che hanno stesso codice HTML. Voglio dire che è stupido perché sei solo ripetendo codice tra diversi file. Questo non è sicuramente un buon approccio. Così Ruby on Rails crea questo layout per voi. E questo è solo dicendo, tutte le mie pagine stanno per avere questo HTML, questa testa titolo qui, e quelli sono Link foglio di stile tag. Inserire qui tutto il mio CSS. Inserire qui tutto il mio JavaScript e alcuni meta tag. Questo è solo qualcosa che fare automaticamente. E poi, terminare la testa, ora qui inizia il corpo. E ora questo è il mio contenuto effettivo. Quindi, se ho voluto mettere qualcosa di simile, un menù qui, mi avrebbe messo proprio sopra questo posto, o qualcosa di simile, in modo che tutte le mie pagine condiviso. Così il layout è condivisa da tutte le pagine. Ora che il rendimento qui dice solo, non ciò che importa pagine questo è in, basta collegare il contenuto di tale la pagina in qui, OK? E ora questo è, per esempio, la contenuto di una pagina che sta per essere collegato a questa dichiarazione resa automaticamente da Rails. Ma questo è un layout comune da tutte le pagine. E questo è un esempio di una pagina. E questo è esattamente la pagina che elenca tutti i libri. Quindi questa è una tabella HTML di base fino in alto. Così quotazione libri, un titolo, autore, descrizione, genere. E qui usiamo, ancora una volta, un po ' Sintassi Ruby, @ books.each-- @ Tipo di dice che la variabile è globale in un certo senso. Poiché questa variabile era in realtà dichiarata nel controllore che si sta andando a vedere in questo momento. Ma basta dare per scontato che questo @ Libri è una variabile che è una lista di tutti i libri. Così books.each, do, e di nuovo, questo è solo dicendo come si desidera denominare ciascuno degli iteratori in modo che non lo facciamo deve preoccuparsi di un quattro, int i blah, blah, blah. Abbiamo appena prendiamo ciascuno degli elementi e li usa. Quindi questo è il libro, e poi semplicemente stampare qui. book.title, book.author, book.description, e blah, blah, blah. Ed ecco un link_to. Quindi link_to è solo un tag link che un utente può cliccare su e va a un altro sito web. Link_to, mostrano quel particolare libro. Quindi, se l'utente è molto interessato a questo libro, allora può scegliere in mostra. Oppure clicca su modifica, se vuole per modificare il libro. O distruggere, se vuole eliminare il libro dal database. OK, fa che ha un senso? Buona. Infine, il controllore. Quindi, in pratica il controller è l'interfaccia tra il modello e la vista. Quindi il modello è la parte del codice che ha del database - ogni tabella nel database ha un rispettivo file nella modello, e così via. E come si fa il modello e la vista interagiscono? Quindi, attraverso il controller. Quello che un controllore fa è che è l' modello per qualcosa come, per esempio, mettere tutto il libro dentro di una variabile. Come questo, @ libri. E deve essere globale con questo a cosa perché sarà si accede dalla vista. Non sta andando ad essere utilizzato entro controllore stesso. E si rallenta solo le informazioni che la vista sta per usare. Ad esempio, il regolatore verifica se l'utente è online. E come si fa? In realtà chiede il modello perché il modello ha la informazioni sull'utente. Ha un tavolo di utenti, i libri Tavolo, altre tabelle. Quindi il controllore chiede se l'utente è in linea. Se l'utente è online, il controllore gestisce le cose come mettere un cookie, o qualcosa di simile, per mettere il timbro dire che l'utente è in linea. Non c'è bisogno di effettuare nuovamente il login. E sta andando a caricare una variabile chiamata utente, ad esempio, che la vista può utilizzare. E la vista può mettere qualcosa qui, per esempio, benvenuto user.name. Così sta andando a dire, benvenuto John, benvenuto James - qualcosa di simile, giusto? Quindi tutte queste variabili utilizzate nella vista stanno per essere caricato nel controller e stanno per essere tirato su dal modello. Questo è l'esempio di un controllore. Così abbiamo, in fondo, ognuno - noi chiamiamo quelle azioni cose. Così l'indice è un'azione. E 'una funzione Ruby. E 'un metodo Ruby in là. Ma per le chiamate regolatore quelle cose azioni. E ogni azione è legata ad un percorso. Quindi, ecco questo percorso, per esempio, è una prima dichiarazione / libri. Quindi se andate a harvard2017.com/books, cosa sta per accadere è questo codice è sta per essere chiamato. E c'è un file - mi permetta di aprire questo reale veloce. C'è un file chiamato file raw. Non è l'apertura. Quindi c'è un file chiamato file raw che in fondo corrisponde - oh, ora si sta aprendo. Qui, percorsi. Quindi, in pratica corrisponde a un ceppo, Attivazione / nuovo, ad esempio, a qualcosa nel controllore. Quindi c'è questo controller chiamato controller di attivazione, ma qui, abbiamo i libri, per esempio. So partite - Libri / nuovo, al controllore libri, l'azione nuova. Quindi, fondamentalmente, molto semplice cose. E qui, se dovesse arrivare / libri, tagliare l'ID dei libri, tagliare nuovo, avete intenzione di andare a quel Metodo Rubino laggiù. Ecco, che cosa questo indice sta facendo è solo il caricamento log book. Questo è qualcosa che - I accedo tutti i libri in un registro. E ordinare tutto. Quindi questo sta per tornare tutti i libri ordinati. Questo è, ancora, nel database. Quindi questo è un metodo del modello. Hai visto questo metodo è creato nel modello. Ora questo è solo caricando tutti i libri e conclude che in una variabile che può essere visto dalla vista. Perché non si può, nel mezzo di il codice HTML, non è possibile chiamare qualcosa direttamente dal modello, perché per due ragioni. In primo luogo, per motivi di sicurezza perché non è davvero interessante per essere caricare le informazioni direttamente all'interno ogni codice HTML che è nel database. E in secondo luogo, per mantenere il vostro codice davvero organizzato. Quindi separare esattamente la diverse parti. Quindi BookLog.sorted_all, questa nella database e questo sta per mettere in una variabile @ libri. E ora questa variabile è accessibile all'interno del codice HTML. Così si può semplicemente mettere tutti i libri non proprio come abbiamo fatto noi, proprio qui. Questa è la variabile. E le visite respond_to fare | Formato |, questa è solo una sorta di sintassi Ruby se l'utente mi chiede Il codice HTML, ho intenzione di rispondere con il codice HTML. Se l'utente mi chiede con il codice JSON, che è qualcosa che applicazioni web usano di comunicare tra loro, hanno di solito utilizzare JSON o qualche altro genere di cose. Così risponde usando solo quelli due diversi formati. Ma per un utente normale, questo non avrebbe bisogno di essere qui. Si potrebbe semplicemente rispondere con HTML, e va bene. Quindi in realtà non ti preoccupare che molto su questo. Questa è l'unica linea di codice nel nostro controllo come sta caricando da HTML banca dati, mettendo in qualcosa che è accessibili dalla vista. E poi di nuovo, ecco Sto creando libri. Ma per creare i libri, ho bisogno di uno studente perché ho bisogno di sapere lo studente i cui libri appartengono a questa, a destra. Quindi @ studente = Student. Studente, ancora una volta, stiamo iniziando con una grande S è lo studente modello. Ok, quindi questo è lo studente modello, questo è il log modello di libro. Student.find, quindi sto andando a trovare un studente utilizzando l'ID dei parametri. params.id, questo è solo me ottenere il valore di questo ID che è stato passato - e l'URL. Basta andare a cercare quello studente. E in primo luogo, stiamo andando a controllare se lo studente ha alcune canzoni e bla, bla, bla. E questo già gestisce l' caso in cui lo studente non esiste, per esempio. E poi, altra cosa, abbiamo appena rispondiamo la stessa cosa utilizzando HTML. E allora possiamo lasciare che l'utente creare le loro canzoni. Quindi questa è una novità. Nuovo è di solito utilizzato per, lasciare all'utente di creare qualcosa. E poi c'è l'azione di creare che è di solito utilizzato per - effettivamente messo le canzoni nel database o qualcosa di simile. Ma una volta di iniziare a utilizzare Rails, le cose stanno per essere molto, molto più chiaro. OK, raffreddare. Tutte le domande finora? Fa ha senso con i controllori, modelli, i campi - sì? Sempre nella vostra applicazione Rails - così tutto questo può essere trovato qui. Così avete app, controllori, quelli sono tutti i miei controllori. Così, per esempio, i libri controllano. Questo è quello che abbiamo appena visto. E poi viste. E ogni controller ha un visualizzazione associata, giusto? Quindi automaticamente quando si chiama questo indice qui, per esempio, o quando si chiamare questo nuovo libro, poi la vista, libri, nuova sta per essere chiamato. Così Rails fa tutto automaticamente per voi. Così ogni controller ha un associato e visualizzare tutti i modelli - qui ho uno, due, tre, quattro, cinque modelli. Ma questo è uno studente modello, così quelli sono le variabili che tutte le gli studenti hanno - localizzazione, data di nascita. Gli studenti sono un po 'di più complicato perché ogni studente ha altro metodo diverso associato ad esso. Ma questo è solo gestendo la tabella di tutte le studenti nel database. E, OK, l'installazione di Rails. Installare Rails, ad essere onesti, non è la cosa più semplice. Ma una volta passato tutto, è molto, molto facile. Quindi l'installazione di Rails, basta andare al sito web, rubyandrails.org / download e seguire le istruzioni riportate. Scarica tutto. E si può fare sia in Appliance, nel CS50 Appliance, il Di Windows, su Mac o qualsiasi operativa sistema di tua scelta. Ruby on Rails gira su tutto. Quote stai già installato Rubino se avete un Mac o - negli apparecchi credo Ruby è - Non ne sono sicuro. E poi basta installato questo software. E se si desidera creare un nuovo applicazione web, è sufficiente fare Rails, nuovo, blog. Rails, nuovi - Non lo so - il nome del tuo sito web. Ed è così semplice. E 'intenzione di creare tutte quelle file che ho appena mostrato. Ma il modello, la vista, e la controllore non stanno per essere ancora popolato. Stai solo andando ad avere per andare lì e popolare queste tre cartelle. Quindi le probabilità sono, si vuole creare un modello, per esempio, attuare una primo modello. Quindi, di nuovo, cercando sempre di mordere più piccoli bit di un problema alla volta. E poi diciamo, creare un modello per gli utenti. Questa è la prima cosa se avete gli utenti. Poi voglio creare un modello proprio come abbiamo mostrato qui. Rails, generare, il modello, l'utente, e quindi stringa-mail - abbiamo che qui. E basta creare quel modello, sì. Rails generare il modello e-mail Utente: string Password: string. E poi si crea un controller che si occupa con l'utente. Ed è possibile creare nuovi utenti e fare quel genere di cose. E poi si può passare alla creazione il resto del tuo sito web. Disinvolto, domande? Sì. AUDIENCE: [incomprensibile] GABRIEL GUIMARAES: Sì, sì, sicuramente andare nella vista. Questa è una domanda molto buona. Quindi il panorama è quello che in realtà contiene il codice HTML. Quindi è ciò che gli utenti stanno andando a vedere. Ancora una volta, qui, questa è una esempio di una visualizzazione. Essa ha il codice HTML e Ruby codice allo stesso tempo. Quindi il codice Ruby è lì per mettere le cose dal database, per esempio, che sono stati caricati sul controller. Cosicché variabile @ libri, per esempio, ha tutti i libri e la tabella libri al database. Abbiamo fatto in modo che aveva nel controllore. E la vista - ciascuna delle pagine esterne tuo sito web è sta per avere una visualizzazione associata. Quindi, se si va alla home page, l' prima pagina, harvard2017.com. Che mostra una pagina. E poi si va a tagliare profilo. Che sta per andare a un controller che è un controller profilo. E il controllore profilo sta per darvi la vista di profilo. E la vista profilo sta a guardare un po 'come questo, ma sta andando a disporre di informazioni sull'utente, e non sui libri. Quindi è il codice HTML e CSS e di quelli cose che un utente vede con il codice Ruby - che in realtà consente di stampare le cose dal database. Che è più chiaro? Spero. PUBBLICO: Il codice HTML viene utilizzato per effettivamente rendere il sito web che la utente vede, ma il codice Ruby è ciò che rende il lavoro sito? GABRIEL GUIMARAES: Il codice Ruby viene convertito in HTML. Quindi, ciò che l'utente ottiene è solo HTML, OK? E 'solo HTML. Questo book.title sta per convertire in il valore di book.title in HTML, OK. Quindi questo è tutto nel server, e così questo dipende da quali libri ci sono nel server in questo momento. Ma ciò che il server avrebbe subito senso è solo il codice HTML, OK. Ma la vista dà solo il layout della ciò che l'HTML è stato andare a guardare come e quali le variabili stanno per essere. Questo tipo di un fuori stampa, OK. Queste cose ci sono fondamentalmente stampare outs. Stanno andando a stampare le variabili, OK. Così che cosa è solo HTML, quelli - autore, titolo, descrizione. Questo è contenuto statico. Questo non cambierà. Questo è il codice HTML semplicemente. Queste sono le stampe per le variabili - cose che dipendono. Cool, altre domande? Buono? Sì. PUBBLICO: Penso che stavi facendo tutto la redazione di un testo diverso programma di editing. Dovremmo anche scaricare questo? GABRIEL GUIMARAES: Sì, mi piace questo editor di testo chiamato TextMate. Ed è davvero buono. E 'adatto a Ruby. E i colori cose molto ordinatamente. Così TextMate, T-E-X-T. Vado mettere quella, aspetta - Voglio dire, è possibile utilizzare gedit o tutto quello che vuoi. Ma questo è specifico per Mac, e questo è davvero bello perché mette tutti i file laggiù. E in Ruby on Rails, è necessario per passare file molto. Quindi è molte, molte file proprio passare da un file, saltare un file o l'altro. Quindi TextMate è molto buona, ma ci sono molti là fuori. Altre domande? OK, sì? AUDIENCE: C'è un sviluppo mobile attraverso Ruby on Rails? GABRIEL GUIMARAES: ho sentito parlare delle cose. Io non li ho usati. Si potrebbe ricercare più su quello. Io non so se c'è qualche buona cosa là fuori. OK, sì? AUDIENCE: [incomprensibile] GABRIEL GUIMARAES: Non Rails, Probabilmente matrice Ruby. Aprire una finestra di terminale e tipo, "Ruby". Si ', probabilmente, e poi si semplicemente installare Rails. Ma se avete intenzione di installare il nuovo Rails 4.0, che consiglio vivamente, è necessario scaricare Rubino 2.0. Questo è il nuovo troppo. E le nuove Rails 4.0 ha qualcosa davvero cool che lo fa al patrimonio. Gestisce attività. Le attività sono ancora immagini, file CSS, e file JavaScript. Quindi, una cosa veramente pulito che Ruby on Rails fa per voi è tutto di coloro CSS i file che avete e tutto - si impacchetta proprio tutto su in uno file enorme, senza spazi o nulla, per minimizzare il tempo l'utente deve scaricare il codice dal server. Quindi quando vedete nel vostro computer, è andando ad avere come 15 file CSS. O molti, molti file CSS diversi. Ma alla fine della giornata, ciò Rotaie automaticamente fa per voi è che mette tutto insieme in un unico file di grandi dimensioni in modo che minimizza il tempo richiesta. Questo è davvero cool. Sì? AUDIENCE: [incomprensibile] GABRIEL GUIMARAES: Esattamente. Quindi, l'integrazione di Google Maps. Questa è una API JavaScript di Google. Così ho appena andato al sito web di Google. Hanno questa API di Google Maps e ho scaricato il codice integrandolo nel mio punto di vista. Così che cosa dovevo fare lì è che ho bisogno di ottenere l' località dal database. Questo è stato fatto nel controller. Così sono andato al controllore - dove è il controller. Il controllore si presentava così. Hai tutte le posizioni del studenti, mettere tutto questo in un grande variabile, una grande lista, che ha tutte le posizioni. E in vista, perché il codice JavaScript API qualcosa nella visualizzare, giusto? Poiché JavaScript viene eseguito all'interno del codice HTML codice, che sta per essere inviato al macchina dell'utente. E in vista, ho caricato tutto questo informazioni nella API di Google. E ha fatto tutto questo per me, che è davvero cool. Ma se si desidera utilizzare le cose in back-end, ed è come una biblioteca, per esempio, ancora una volta - l'integrazione con Facebook. Questo è qualcosa che molti, molti, molte applicazioni utilizzano al giorno d'oggi. Quindi, avere il vostro integrazione con Facebook perché è molto più facile da solo effettuare il login con Facebook che per creare un conto e bla, bla, bla. Poi basta utilizzare un gioiello ed è come semplice come andare al file gioiello. File di Gem è un file chiamato file di gioiello in la directory di origine del vostro Ruby on Rails progetto. Basta andare lì e aggiungere nuovo gioiello. E si guarda su Google. Ci sono molte, molte, molte gemme. Ce n'è uno che fa specificamente questo per l'integrazione di Facebook. Io non sono sicuro di quello che il nome di essa. Basta Google e sei andare a trovarlo. OK, altre domande? Impressionante, grazie per essere venuti.