developing*amazing*web*apps*...

34
Developing Amazing Web Apps with Ruby on Rails Gabriel Guimaraes ‘17 Stephen Turban ’17 Zack Chauvin ‘17

Upload: others

Post on 03-Jun-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

Developing  Amazing  Web  Apps  with  Ruby  on  Rails  

Gabriel  Guimaraes  ‘17  Stephen  Turban  ’17  Zack  Chauvin  ‘17  

Page 2: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

Model  View  Controller  

Page 3: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

MVC  as  a  Store    

Page 4: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

The  Cast:    Vince    

Page 5: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

BeauIful,  but  stupid.    

Page 6: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

The  Cast:  Carl  

Page 7: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

Controlling,  But  Incapable.    

Page 8: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

The  Cast:  MiN  

Page 9: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

Capable,  But  Submissive    

Page 10: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

The  Process:    

•  Let’s  go  to  the  store.    •  Volunteers  needed.    

Page 11: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17
Page 12: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

What  is  RoR?  

Page 13: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

Framework  

Page 14: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17
Page 15: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

unsigned  int  DJBHash(const  char*  str)  {  

unsigned  int  hash  =  5381;    for(int  i  =  0;  i  <  strlen(str);  i++)  {  

 hash  =  ((hash  <<  5)  +  hash)  +  str[i];  }  

                 return  hash;  }  

Page 16: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

dicIonary  =  Hash.new  dicIonary[“foo”]  =  true  

 

if  dicIonary[“foo”]  ==  true    return  true  

Page 17: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

Gems    

Plenty  of  help  online    

FUN!  

Page 18: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

•  puts  “Hello  World”  

•  x  =  1  •  while  x  <  50  •         if  x  >  25  •                 puts  “Big!”  •         else  •                 puts  “Small…”  •         end  •         x  +=  1  •  end  

Just  like  C…  

Page 19: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

•  x  =  5  •  puts  “I  am  #{x}“  if  x  >  3  

•  list  =  [“John”,  4,  2]  •  list  <<  3  

•  List.each  do  |elem|  •         puts  elem  •  end  

But  more  powerful!  

Page 20: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

•  <body>  •     <%  if  user.logged_in?  %>  •                 <div>Welcome  <%=  user.name  %></div>  •  <%  end  %>  •  </body>  

Ruby  +  HTML  

Page 21: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

Resources  

•  hNp://ruby-­‐lang.org  •  hNp://tryruby.org  •  hNp://codeacademy.com    

Page 22: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17
Page 23: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

Why  Rails?  

•  MVC  makes  everything  simpler  

•  Less  Ime  spent  on  low-­‐level  problems  

•  Very  popular  right  now!  Rails  4.0!  

Page 24: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17
Page 25: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17
Page 26: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

Model  

•  Each  table  in  the  Database  has  a  corresponding  model  

•  rails  generate  model  User  email:string  password:string  

•  Database  relaIons    -­‐  has_many/belongs_to  

Page 27: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17
Page 28: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

View  

Page 29: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17
Page 30: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17
Page 31: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

Controller  

•  Interface  between  Model  and  View  

•  Loads  InformaIon  for  the  view  

•  Calls  methods  from  Model  

Page 32: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17
Page 33: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

Installing  Rails  

•  hNp://rubyonrails.org/download  •  hNp://guides.rubyonrails.org/geung_started.html    •  Appliance  •  Windows  •  Mac  

Page 34: Developing*Amazing*Web*Apps* with*Ruby*on*Rails*cdn.cs50.net/2014/fall/seminars/ruby_on_rails/ruby_on_rails.pdf · Developing*Amazing*Web*Apps* with*Ruby*on*Rails* Gabriel*Guimaraes*‘17

QuesIons?