Developing*Amazing*Web*Apps*with*...

26
Developing Amazing Web Apps with Ruby on Rails Gabriel Guimaraes ‘17

Transcript of Developing*Amazing*Web*Apps*with*...

Page 1: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

Developing  Amazing  Web  Apps  with  Ruby  on  Rails  

Gabriel  Guimaraes  ‘17  

Page 2: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*
Page 3: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*
Page 4: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

What  is  RoR?  

Page 5: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

Framework  

Page 6: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

Model  View  Controller  

Page 7: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*
Page 8: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

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 9: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

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

 

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

Page 10: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

Gems    

Plenty  of  help  online    

FUN!  

Page 11: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

•  puts  “Hello  World”  

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

Just  like  C…  

Page 12: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

•  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 13: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

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

Ruby  +  HTML  

Page 14: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

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

Page 15: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*
Page 16: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

Why  Rails?  •  MVC  makes  everything  simpler  

•  Less  Xme  spent  on  low-­‐level  problems  

•  Very  popular  right  now!  Rails  4.0!  

Page 17: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*
Page 18: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

Model  •  Each  table  in  the  Database  has  a  corresponding  model  

•  rails  generate  model  User  email:string  password:string  

•  Database  relaXons    -­‐  has_many/belongs_to  

Page 19: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*
Page 20: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

View  

Page 21: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*
Page 22: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*
Page 23: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

Controller  •  Interface  between  Model  and  View  

•  Loads  InformaXon  for  the  view  

•  Calls  methods  from  Model  

Page 24: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*
Page 25: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

Installing  Rails  •  hop://rubyonrails.org/download  •  hop://guides.rubyonrails.org/gesng_started.html    •  Appliance  •  Windows  •  Mac  

Page 26: Developing*Amazing*Web*Apps*with* Ruby*on*Rails*d2o9nyf4hwsci4.cloudfront.net/2013/fall/seminars/ruby_on_rails/ruby… · Model* • Each*table*in*the*Database*has*acorresponding*model*

QuesXons?!