Ruby on Rails                      Master Universitario en Desarrollo e Integración de                                   S...
¿Qué es Rails?                     • Plataforma Open Source para la creación                             de sitios web.   ...
¿Quién usa Rails?                                                                  shopify.com                    twitter....
¿Qué vamos a construir?miércoles 2 de febrero de 2011
¿Qué vamos a construir,                            hoy?                 • Que nuestros futuros usuarios puedan            ...
Lugares de referencia                     • http://railstutorial.org                     • Documentación del API de Rails:...
Instalación                     • Windows: Rails installer                     • ssh ror<n>@ror.deusto.efaber.netmiércoles...
MVC                                 Source: http://www.railstutorial.orgmiércoles 2 de febrero de 2011
Esqueleto de nueva aplicación            [esti@local] $ rails new deusto_app                 create README                ...
¿Y ahora qué?                     Rails viene con muchas tareas predefinidas                     para ponernos en marcha rá...
miércoles 2 de febrero de 2011
$ rails server                                 http://localhost:3000                                         Up           ...
Creación de usuarios         $ rails generate scaffold User name:string email:string password:string                create...
Creación de usuarios         $ rails generate scaffold User name:string email:string password:string                create...
La base de datos                          /db/migrate/<fechahora>_create_users.rbmiércoles 2 de febrero de 2011
$ rake db:migratemiércoles 2 de febrero de 2011
http://localhost:3000/users                                                         Voi                                   ...
Modelo                                 /app/models/user.rbmiércoles 2 de febrero de 2011
Controlador                                 app/controllers/users_controller.rbmiércoles 2 de febrero de 2011
Vistas                                 /app/views/users/index.html.erbmiércoles 2 de febrero de 2011
Rutasmiércoles 2 de febrero de 2011
Demo de scaffold de                               usuariosmiércoles 2 de febrero de 2011
Mu                                   cho                                         me                                       ...
Introducir algunos records con emails inválidos,                           duplicados, en blanco...                       ...
Validaciones ActiveRecord nos da “gratis” métodos para validar los campos que introducimosmiércoles 2 de febrero de 2011
Y podemos visualizar los errores de validación               en el formulariomiércoles 2 de febrero de 2011
Tests                     • Unit tests: Testean la funcionalidad del                             modelo                   ...
Unit Test del modelo User                                 /tests/unit/user_test.rb                                  rake d...
Unit Test del modelo User 1/2miércoles 2 de febrero de 2011
Unit Test del modelo User 2/2miércoles 2 de febrero de 2011
Ejecutamos el test             $ cd test             $ ruby unit/test_user.rbmiércoles 2 de febrero de 2011
¡Os toca!miércoles 2 de febrero de 2011
Empezamos de dónde lo habíamos dejado:    $ git clone git://github.com/esti/deusto_app.git    $ git checkout -b 1_user_mod...
Controlador                                      render /app/views/users/index.html.erb                                   ...
ActiveRecord                     • User.all                     • User.all.where(:role => ‘admin’).order                  ...
ActiveRecord                  Lazy loading:                      users = User.all.where(:role => “admin”)                 ...
Rails console                                   $ rails console    La consola rails como el interprete “irb” de Ruby pero ...
Create y updatemiércoles 2 de febrero de 2011
Rutas REST                           ¿Cómo es posible que aparentemente la                          misma ruta sirva para ...
Las                                       rut                                          as n                               ...
Rutas                                           /config/routes.rb $ rake routes   users     GET                 /users(.:fo...
Registro real        No necesitamos una persona que registre a todos los        usuarios, sino que cada uno se pueda dar d...
Modificamos el tipo del campo de la contraseña                          y añadimos confirmaciónmiércoles 2 de febrero de 2011
El campo de confirmación no existe porque no es una        columna de la tabla en la base de datos. Tenemos que            ...
Definimos el atributo password_confirmation y lo                       añadimos en las validacionesmiércoles 2 de febrero de...
miércoles 2 de febrero de 2011
Demomiércoles 2 de febrero de 2011
Ahora que el usuario se puede registrar, necesitamos quepueda hacer login para que luego podamos identificar quién         ...
El usuario va a poder identificarse usando su email y la                  contraseña que dio al registrarsemiércoles 2 de f...
Tenemos que definir el método User.authenticatemiércoles 2 de febrero de 2011
Preparamos el formulario para que el usuario pueda hacer            login con el email y la contraseña                    ...
Y definimos unas URL cortas más bonitas                                 •/signup: para registrarse                         ...
Necesitamos links a login/logout en todas las páginas            de la web. Para esto están los “layouts”. Son las        ...
Plantilla principal                                 /app/views/layouts/application.html.erbmiércoles 2 de febrero de 2011
Necesitamos una función que nos diga si el usuario                            está loggeado o no                 /app/cont...
Y ponerlo todo un poco más bonito                                  /public/stylesheets/application.cssmiércoles 2 de febre...
Demomiércoles 2 de febrero de 2011
Upcoming SlideShare
Loading in …5
×

Curso de Ruby on Rails para el Master de Deusto

2,516 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,516
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
81
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Curso de Ruby on Rails para el Master de Deusto

  1. 1. Ruby on Rails Master Universitario en Desarrollo e Integración de Soluciones de Software Universidad de Deusto Día 1miércoles 2 de febrero de 2011
  2. 2. ¿Qué es Rails? • Plataforma Open Source para la creación de sitios web. • Puntos fuertes: • Baja barrera de entrada • Favorece el desarrollo ágil • Se programa en Ruby • Comunidad muy activa, despierta y dispuesta a ayudar • ...miércoles 2 de febrero de 2011
  3. 3. ¿Quién usa Rails? shopify.com twitter.com basecamphq.com github.com justin.tv yellowpages.com pragprog.commiércoles 2 de febrero de 2011
  4. 4. ¿Qué vamos a construir?miércoles 2 de febrero de 2011
  5. 5. ¿Qué vamos a construir, hoy? • Que nuestros futuros usuarios puedan registrarse y entrar en la aplicación usando su login y contraseña • http://slidesha.re/h4xuXdmiércoles 2 de febrero de 2011
  6. 6. Lugares de referencia • http://railstutorial.org • Documentación del API de Rails: http://api.rubyonrails.org ó http://railsapi.com • Rails Guides: http://guides.rubyonrails.org/ • “Chuletas”: http://blog.envylabs.com/Rails_3_Cheat_Sheets.pdfmiércoles 2 de febrero de 2011
  7. 7. Instalación • Windows: Rails installer • ssh ror<n>@ror.deusto.efaber.netmiércoles 2 de febrero de 2011
  8. 8. MVC Source: http://www.railstutorial.orgmiércoles 2 de febrero de 2011
  9. 9. Esqueleto de nueva aplicación [esti@local] $ rails new deusto_app create README create db create Rakefile create lib create Gemfile create log create app create public create app/controllers/ create public/images create app/helpers/ create public/stylesheets create public/javascripts create app/mailers/ create script create app/models/ create test create app/views/ create vendor/plugins create config create config/routes.rb create config/application.rb create config/environment.rb create config/initializers create config/locales create config/boot.rb create config/database.ymlmiércoles 2 de febrero de 2011
  10. 10. ¿Y ahora qué? Rails viene con muchas tareas predefinidas para ponernos en marcha rápidamente •$ cd deusto_app •$ rails --help •$ rails generate --help •$ rake -Tmiércoles 2 de febrero de 2011
  11. 11. miércoles 2 de febrero de 2011
  12. 12. $ rails server http://localhost:3000 Up a nd ru nn ing !miércoles 2 de febrero de 2011
  13. 13. Creación de usuarios $ rails generate scaffold User name:string email:string password:string create db/migrate/20110128102008_create_users.rb create app/models/user.rb create test/unit/user_test.rb create test/fixtures/users.yml route resources :users create app/controllers/users_controller.rb create app/views/users create app/views/users/index.html.erb create app/views/users/edit.html.erb create app/views/users/show.html.erb create app/views/users/new.html.erb create app/views/users/_form.html.erb create test/functional/users_controller_test.rb create app/helpers/users_helper.rb create test/unit/helpers/users_helper_test.rb create public/stylesheets/scaffold.cssmiércoles 2 de febrero de 2011
  14. 14. Creación de usuarios $ rails generate scaffold User name:string email:string password:string create db/migrate/20110128102008_create_users.rb !!! create app/models/user.rb create test/unit/user_test.rb create test/fixtures/users.yml route resources :users create app/controllers/users_controller.rb create app/views/users create app/views/users/index.html.erb create app/views/users/edit.html.erb create app/views/users/show.html.erb create app/views/users/new.html.erb create app/views/users/_form.html.erb create test/functional/users_controller_test.rb create app/helpers/users_helper.rb create test/unit/helpers/users_helper_test.rb create public/stylesheets/scaffold.cssmiércoles 2 de febrero de 2011
  15. 15. La base de datos /db/migrate/<fechahora>_create_users.rbmiércoles 2 de febrero de 2011
  16. 16. $ rake db:migratemiércoles 2 de febrero de 2011
  17. 17. http://localhost:3000/users Voi l a!miércoles 2 de febrero de 2011
  18. 18. Modelo /app/models/user.rbmiércoles 2 de febrero de 2011
  19. 19. Controlador app/controllers/users_controller.rbmiércoles 2 de febrero de 2011
  20. 20. Vistas /app/views/users/index.html.erbmiércoles 2 de febrero de 2011
  21. 21. Rutasmiércoles 2 de febrero de 2011
  22. 22. Demo de scaffold de usuariosmiércoles 2 de febrero de 2011
  23. 23. Mu cho me jor !miércoles 2 de febrero de 2011
  24. 24. Introducir algunos records con emails inválidos, duplicados, en blanco... !!!!!! !!miércoles 2 de febrero de 2011
  25. 25. Validaciones ActiveRecord nos da “gratis” métodos para validar los campos que introducimosmiércoles 2 de febrero de 2011
  26. 26. Y podemos visualizar los errores de validación en el formulariomiércoles 2 de febrero de 2011
  27. 27. Tests • Unit tests: Testean la funcionalidad del modelo • Functional tests: Testean la funcionalidad del controlador y las vistas • Integration tests: Testean el flujo de una visita típica a la webmiércoles 2 de febrero de 2011
  28. 28. Unit Test del modelo User /tests/unit/user_test.rb rake db:test:preparemiércoles 2 de febrero de 2011
  29. 29. Unit Test del modelo User 1/2miércoles 2 de febrero de 2011
  30. 30. Unit Test del modelo User 2/2miércoles 2 de febrero de 2011
  31. 31. Ejecutamos el test $ cd test $ ruby unit/test_user.rbmiércoles 2 de febrero de 2011
  32. 32. ¡Os toca!miércoles 2 de febrero de 2011
  33. 33. Empezamos de dónde lo habíamos dejado: $ git clone git://github.com/esti/deusto_app.git $ git checkout -b 1_user_model 1_user_model Ó https://github.com/esti/deusto_app/tree/user_modelmiércoles 2 de febrero de 2011
  34. 34. Controlador render /app/views/users/index.html.erb render /app/views/users/show.html.erb render /app/views/users/new.html.erbmiércoles 2 de febrero de 2011
  35. 35. ActiveRecord • User.all • User.all.where(:role => ‘admin’).order (:created_at => ‘desc’) • User.find(18) • User.destroy([1,2,3,4]) http://blog.envylabs.com/Rails_3_Cheat_Sheets.pdfmiércoles 2 de febrero de 2011
  36. 36. ActiveRecord Lazy loading: users = User.all.where(:role => “admin”) if params[:order] users = users.order(params[:order]) end users.each {|user| user.name} -> Hasta aquí no se toca la base de datosmiércoles 2 de febrero de 2011
  37. 37. Rails console $ rails console La consola rails como el interprete “irb” de Ruby pero con acceso a toda la aplicación rails, con todas las clases, métodos, etc. Es muy útil para hacer pruebas y debuggingmiércoles 2 de febrero de 2011
  38. 38. Create y updatemiércoles 2 de febrero de 2011
  39. 39. Rutas REST ¿Cómo es posible que aparentemente la misma ruta sirva para diferentes acciones?miércoles 2 de febrero de 2011
  40. 40. Las rut as n os l o ex plic an!miércoles 2 de febrero de 2011
  41. 41. Rutas /config/routes.rb $ rake routes users GET /users(.:format) {:action=>"index", :controller=>"users"} POST /users(.:format) {:action=>"create", :controller=>"users"} new_user GET /users/new(.:format) {:action=>"new", :controller=>"users"} edit_user GET /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"} user GET /users/:id(.:format) {:action=>"show", :controller=>"users"} PUT /users/:id(.:format) {:action=>"update", :controller=>"users"} DELETE /users/:id(.:format) {:action=>"destroy", :controller=>"users"}miércoles 2 de febrero de 2011
  42. 42. Registro real No necesitamos una persona que registre a todos los usuarios, sino que cada uno se pueda dar de alta sólomiércoles 2 de febrero de 2011
  43. 43. Modificamos el tipo del campo de la contraseña y añadimos confirmaciónmiércoles 2 de febrero de 2011
  44. 44. El campo de confirmación no existe porque no es una columna de la tabla en la base de datos. Tenemos que definirlo en el modelo explícitamente.miércoles 2 de febrero de 2011
  45. 45. Definimos el atributo password_confirmation y lo añadimos en las validacionesmiércoles 2 de febrero de 2011
  46. 46. miércoles 2 de febrero de 2011
  47. 47. Demomiércoles 2 de febrero de 2011
  48. 48. Ahora que el usuario se puede registrar, necesitamos quepueda hacer login para que luego podamos identificar quién hace cada tweet. $ rails generate controller sessions newmiércoles 2 de febrero de 2011
  49. 49. El usuario va a poder identificarse usando su email y la contraseña que dio al registrarsemiércoles 2 de febrero de 2011
  50. 50. Tenemos que definir el método User.authenticatemiércoles 2 de febrero de 2011
  51. 51. Preparamos el formulario para que el usuario pueda hacer login con el email y la contraseña /app/views/sessions/new.html.erb El HTML que generamiércoles 2 de febrero de 2011
  52. 52. Y definimos unas URL cortas más bonitas •/signup: para registrarse •/login: para entrar •/logout: para salirmiércoles 2 de febrero de 2011
  53. 53. Necesitamos links a login/logout en todas las páginas de la web. Para esto están los “layouts”. Son las plantillas donde suelen ir la cabecera y el pie de página comunes a todas las páginasmiércoles 2 de febrero de 2011
  54. 54. Plantilla principal /app/views/layouts/application.html.erbmiércoles 2 de febrero de 2011
  55. 55. Necesitamos una función que nos diga si el usuario está loggeado o no /app/controllers/application_controller.rbmiércoles 2 de febrero de 2011
  56. 56. Y ponerlo todo un poco más bonito /public/stylesheets/application.cssmiércoles 2 de febrero de 2011
  57. 57. Demomiércoles 2 de febrero de 2011

×