Curso de Ruby on Rails para el Master de Deusto. Día 2
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,036
On Slideshare
2,036
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
44
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Ruby on Rails Master Universitario en Desarrollo e Integración de Soluciones Software Universidad de Deusto Día 2miércoles 2 de febrero de 2011
  • 2. ¿Qué hicimos ayer? • Registro de usuarios • Login y logout de usuarios • Tests unitarios del modelo usuariosmiércoles 2 de febrero de 2011
  • 3. Algunas aclaracionesmiércoles 2 de febrero de 2011
  • 4. Vistas y Helpersmiércoles 2 de febrero de 2011
  • 5. /app/controllers/ sessions_controller.rb /logs/development.logmiércoles 2 de febrero de 2011
  • 6. Rutas y helpers /app/layouts/ application.html.erb /app/views/sessions/ new.html.erbmiércoles 2 de febrero de 2011
  • 7. Las rutas definen los siguientes helpers que podemos usar en los links y en los formularios y nos ahorran escribir direcciones largas. Sólo hay que poner el sufijo “_path” a la primera columna Ejemplos: •link_to users_path •link_to new_user_path •form_for sessions_path (porque es POST) •new_session_pathmiércoles 2 de febrero de 2011
  • 8. ¿Preguntas sobre lo de ayer?miércoles 2 de febrero de 2011
  • 9. Dónde lo dejamos ayer: https://github.com/esti/deusto_app/zipball/ 2_signup_and_login Dónde vamos a llegar ahora: https://github.com/esti/deusto_app/zipball/3_tweetsmiércoles 2 de febrero de 2011
  • 10. Test funcionales /test/functional/users_controller_test.rbmiércoles 2 de febrero de 2011
  • 11. ... para login/logout también /test/functionals/sessions_controller_test.rbmiércoles 2 de febrero de 2011
  • 12. Fixtures Para comprobar que un usuario ya registrado puede loguearse, necesitamos poblar la base de datos de test con usuarios de prueba /db/fixtures/users.rbmiércoles 2 de febrero de 2011
  • 13. Ejecutamos todos los tests, tanto Unit como Functional $ rake testmiércoles 2 de febrero de 2011
  • 14. Ejercicios • users_controller_test.rb: Comprobar que un usuario que pone un email no válido al registrarse, vuelve al formulario y le sale el error de validación. • sessions_controller_test.rb: Comprobar que un usuario inexistente en la base de datos no puede entrar.miércoles 2 de febrero de 2011
  • 15. Siguiente Ahora que ya estamos loggeados, necesitamos poder publicar tweetsmiércoles 2 de febrero de 2011
  • 16. Demomiércoles 2 de febrero de 2011
  • 17. Modelo Tweet$ rails generate scaffold Tweet content:string user:references $ rake db:migratemiércoles 2 de febrero de 2011
  • 18. Modelo TweetActive Record nos “regala” métodos para definir relaciones entre modelosmiércoles 2 de febrero de 2011
  • 19. Rails console $ rails consolemiércoles 2 de febrero de 2011
  • 20. Lo que sale del scaffold Lo que queremos conseguirmiércoles 2 de febrero de 2011
  • 21. Poblamos la base de datos con datos de prueba con un “rake task” /lib/tasks/tweets.rakemiércoles 2 de febrero de 2011
  • 22. /app/views/tweets/index.html.erb Lo que sale del scaffold Modificadomiércoles 2 de febrero de 2011
  • 23. Helpermiércoles 2 de febrero de 2011
  • 24. ¡A programar!miércoles 2 de febrero de 2011
  • 25. Ahora queremos ahorrarle un click al usuario incluyendo el el formulario directamente en el listado de tweetsmiércoles 2 de febrero de 2011
  • 26. Scaffold nos ha creado automáticamente el formulario de crear un tweet /app/views/tweets/_form.html.erbmiércoles 2 de febrero de 2011
  • 27. miércoles 2 de febrero de 2011
  • 28. Nos aseguramos de que para poder tweetear, te has identificado antes Y al guardar el tweet, nos aseguramos de asignárselo al usuario correspondientemiércoles 2 de febrero de 2011
  • 29. Esta es la función que comprueba que el usuario está loggeado antes de poder tweetearmiércoles 2 de febrero de 2011
  • 30. Ahora que tenemos la funcionalidad principal de nuestra applicación, hacemos la “home” de nuestra web sea el listado de tweetsmiércoles 2 de febrero de 2011
  • 31. Demomiércoles 2 de febrero de 2011
  • 32. Es hora de hacer un poco de limpieza: el código que muestra los errores de validación, es prácticamente el mismo para el formulario de tweets y para el de usuarios. /app/views/tweets/_form.html.erb /app/views/users/_form.html.erbmiércoles 2 de febrero de 2011
  • 33. Hacemos un “partial” (/app/views/shared/ _error_messages.html.erb) que contiene ese código duplicado Y lo incluimos en los dos formulariosmiércoles 2 de febrero de 2011
  • 34. Tests!miércoles 2 de febrero de 2011
  • 35. /test/units/tweet_test.rbmiércoles 2 de febrero de 2011
  • 36. /test/controllers/tweets_controller_test.rbmiércoles 2 de febrero de 2011
  • 37. /test/controllers/tweets_controller_test.rbmiércoles 2 de febrero de 2011
  • 38. La función de hacer login en un test la vamos a necesitar en muchos sitios, por eso la ponemos en el helper /test/ test_helper.rbmiércoles 2 de febrero de 2011
  • 39. Nuestro primer test de integraciónmiércoles 2 de febrero de 2011
  • 40. ¡Os toca!miércoles 2 de febrero de 2011
  • 41. Ajaxmiércoles 2 de febrero de 2011
  • 42. Demomiércoles 2 de febrero de 2011
  • 43. Prototype: Librería Javascript Así incluimos la librería javascript Este es el HTML que generamiércoles 2 de febrero de 2011
  • 44. Le decimos al formulario que queremos que funcione de manera “remota” Genera una etiqueta personalizada HTML5 que incluye en el formulario Y el javascript que trae Rails incluye una función que todos los formularios que tienen esta etiqueta se manden de manera remotamiércoles 2 de febrero de 2011
  • 45. Ahora tenemos que hacer que la respuesta del servidor sea la petición es “remota”. Para eso vale el bloque “respond_to”! render “app/views/tweets/create.js.erb”miércoles 2 de febrero de 2011
  • 46. /app/views/tweets/create.js.erb Contiene la respuesta del servidor para el formulario remoto, en javascript.miércoles 2 de febrero de 2011
  • 47. Hacemos un partial que contiene la porción de HTML que corresponde a cada tweet, que es lo que incluimos al principio de la lista cuando alquien crea un nuevo /app/views/tweets/_tweet.html.erb tweet Y ya que lo tenemos lo reutilizamos en el /app/views/tweets/index.html.erb listado de tweetsmiércoles 2 de febrero de 2011
  • 48. miércoles 2 de febrero de 2011