curso de ruby on rails para el master de deusto. día 2

48
Ruby on Rails Master Universitario en Desarrollo e Integración de Soluciones Software Universidad de Deusto Día 2 miércoles 2 de febrero de 2011

Upload: estialvarez

Post on 12-May-2015

1.842 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Curso de Ruby on Rails para el Master de Deusto. Día 2

Ruby on RailsMaster Universitario en Desarrollo e Integración de

Soluciones Software

Universidad de Deusto

Día 2

miércoles 2 de febrero de 2011

Page 2: Curso de Ruby on Rails para el Master de Deusto. Día 2

• Registro de usuarios

• Login y logout de usuarios

• Tests unitarios del modelo usuarios

¿Qué hicimos ayer?

miércoles 2 de febrero de 2011

Page 3: Curso de Ruby on Rails para el Master de Deusto. Día 2

Algunas aclaraciones

miércoles 2 de febrero de 2011

Page 4: Curso de Ruby on Rails para el Master de Deusto. Día 2

Vistas y Helpers

miércoles 2 de febrero de 2011

Page 5: Curso de Ruby on Rails para el Master de Deusto. Día 2

/logs/development.log

/app/controllers/sessions_controller.rb

miércoles 2 de febrero de 2011

Page 6: Curso de Ruby on Rails para el Master de Deusto. Día 2

Rutas y helpers

/app/layouts/application.html.erb

/app/views/sessions/new.html.erb

miércoles 2 de febrero de 2011

Page 7: Curso de Ruby on Rails para el Master de Deusto. Día 2

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_path

miércoles 2 de febrero de 2011

Page 8: Curso de Ruby on Rails para el Master de Deusto. Día 2

¿Preguntas sobre lo de ayer?

miércoles 2 de febrero de 2011

Page 9: Curso de Ruby on Rails para el Master de Deusto. Día 2

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_tweets

miércoles 2 de febrero de 2011

Page 10: Curso de Ruby on Rails para el Master de Deusto. Día 2

Test funcionales/test/functional/users_controller_test.rb

miércoles 2 de febrero de 2011

Page 11: Curso de Ruby on Rails para el Master de Deusto. Día 2

... para login/logout también/test/functionals/sessions_controller_test.rb

miércoles 2 de febrero de 2011

Page 12: Curso de Ruby on Rails para el Master de Deusto. Día 2

FixturesPara comprobar que un usuario ya registrado puede

loguearse, necesitamos poblar la base de datos de test con usuarios de prueba/db/fixtures/users.rb

miércoles 2 de febrero de 2011

Page 13: Curso de Ruby on Rails para el Master de Deusto. Día 2

Ejecutamos todos los tests, tanto Unit como Functional

$ rake test

miércoles 2 de febrero de 2011

Page 14: Curso de Ruby on Rails para el Master de Deusto. Día 2

• 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.

Ejercicios

miércoles 2 de febrero de 2011

Page 15: Curso de Ruby on Rails para el Master de Deusto. Día 2

Siguiente

Ahora que ya estamos loggeados, necesitamos poder publicar tweets

miércoles 2 de febrero de 2011

Page 16: Curso de Ruby on Rails para el Master de Deusto. Día 2

Demo

miércoles 2 de febrero de 2011

Page 17: Curso de Ruby on Rails para el Master de Deusto. Día 2

Modelo Tweet$ rails generate scaffold Tweet content:string user:references

$ rake db:migrate

miércoles 2 de febrero de 2011

Page 18: Curso de Ruby on Rails para el Master de Deusto. Día 2

Modelo TweetActive Record nos “regala” métodos para definir relaciones

entre modelos

miércoles 2 de febrero de 2011

Page 19: Curso de Ruby on Rails para el Master de Deusto. Día 2

Rails console$ rails console

miércoles 2 de febrero de 2011

Page 20: Curso de Ruby on Rails para el Master de Deusto. Día 2

Lo que sale del scaffold

Lo que queremos conseguir

miércoles 2 de febrero de 2011

Page 21: Curso de Ruby on Rails para el Master de Deusto. Día 2

Poblamos la base de datos con datos de prueba con un “rake task”

/lib/tasks/tweets.rake

miércoles 2 de febrero de 2011

Page 22: Curso de Ruby on Rails para el Master de Deusto. Día 2

Lo que sale del scaffold

Modificado

/app/views/tweets/index.html.erb

miércoles 2 de febrero de 2011

Page 23: Curso de Ruby on Rails para el Master de Deusto. Día 2

Helper

miércoles 2 de febrero de 2011

Page 24: Curso de Ruby on Rails para el Master de Deusto. Día 2

¡A programar!

miércoles 2 de febrero de 2011

Page 25: Curso de Ruby on Rails para el Master de Deusto. Día 2

Ahora queremos ahorrarle un click al usuario incluyendo el el formulario directamente en el listado de tweets

miércoles 2 de febrero de 2011

Page 26: Curso de Ruby on Rails para el Master de Deusto. Día 2

Scaffold nos ha creado automáticamente el formulario de crear un tweet /app/views/tweets/_form.html.erb

miércoles 2 de febrero de 2011

Page 27: Curso de Ruby on Rails para el Master de Deusto. Día 2

miércoles 2 de febrero de 2011

Page 28: Curso de Ruby on Rails para el Master de Deusto. Día 2

Nos aseguramos de que para poder tweetear, te has identificado antes

Y al guardar el tweet, nos aseguramos de asignárselo al usuario

correspondiente

miércoles 2 de febrero de 2011

Page 29: Curso de Ruby on Rails para el Master de Deusto. Día 2

Esta es la función que comprueba que el usuario está loggeado antes

de poder tweetear

miércoles 2 de febrero de 2011

Page 30: Curso de Ruby on Rails para el Master de Deusto. Día 2

Ahora que tenemos la funcionalidad principal de nuestra applicación, hacemos la “home” de nuestra web sea el

listado de tweets

miércoles 2 de febrero de 2011

Page 31: Curso de Ruby on Rails para el Master de Deusto. Día 2

Demo

miércoles 2 de febrero de 2011

Page 32: Curso de Ruby on Rails para el Master de Deusto. Día 2

/app/views/tweets/_form.html.erb

/app/views/users/_form.html.erb

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.

miércoles 2 de febrero de 2011

Page 33: Curso de Ruby on Rails para el Master de Deusto. Día 2

Hacemos un “partial” (/app/views/shared/_error_messages.html.erb) que contiene ese

código duplicado

Y lo incluimos en los dos formularios

miércoles 2 de febrero de 2011

Page 34: Curso de Ruby on Rails para el Master de Deusto. Día 2

Tests!

miércoles 2 de febrero de 2011

Page 35: Curso de Ruby on Rails para el Master de Deusto. Día 2

/test/units/tweet_test.rb

miércoles 2 de febrero de 2011

Page 36: Curso de Ruby on Rails para el Master de Deusto. Día 2

/test/controllers/tweets_controller_test.rb

miércoles 2 de febrero de 2011

Page 37: Curso de Ruby on Rails para el Master de Deusto. Día 2

/test/controllers/tweets_controller_test.rb

miércoles 2 de febrero de 2011

Page 38: Curso de Ruby on Rails para el Master de Deusto. Día 2

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.rb

miércoles 2 de febrero de 2011

Page 39: Curso de Ruby on Rails para el Master de Deusto. Día 2

Nuestro primer test de integración

miércoles 2 de febrero de 2011

Page 40: Curso de Ruby on Rails para el Master de Deusto. Día 2

¡Os toca!

miércoles 2 de febrero de 2011

Page 41: Curso de Ruby on Rails para el Master de Deusto. Día 2

Ajax

miércoles 2 de febrero de 2011

Page 42: Curso de Ruby on Rails para el Master de Deusto. Día 2

Demo

miércoles 2 de febrero de 2011

Page 43: Curso de Ruby on Rails para el Master de Deusto. Día 2

Prototype: Librería Javascript

Así incluimos la librería javascript

Este es el HTML que

genera

miércoles 2 de febrero de 2011

Page 44: Curso de Ruby on Rails para el Master de Deusto. Día 2

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 remota

miércoles 2 de febrero de 2011

Page 45: Curso de Ruby on Rails para el Master de Deusto. Día 2

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

Page 46: Curso de Ruby on Rails para el Master de Deusto. Día 2

/app/views/tweets/create.js.erb Contiene la respuesta del servidor para el formulario

remoto, en javascript.

miércoles 2 de febrero de 2011

Page 47: Curso de Ruby on Rails para el Master de Deusto. Día 2

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

tweet

Y ya que lo tenemos lo

reutilizamos en el listado de tweets/app/views/tweets/index.html.erb

/app/views/tweets/_tweet.html.erb

miércoles 2 de febrero de 2011

Page 48: Curso de Ruby on Rails para el Master de Deusto. Día 2

miércoles 2 de febrero de 2011