SlideShare una empresa de Scribd logo
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
¿Qué hicimos ayer?

                     • Registro de usuarios
                     • Login y logout de usuarios
                     • Tests unitarios del modelo usuarios


miércoles 2 de febrero de 2011
Algunas aclaraciones



miércoles 2 de febrero de 2011
Vistas y Helpers




miércoles 2 de febrero de 2011
/app/controllers/
                                 sessions_controller.rb




                                  /logs/development.log




miércoles 2 de febrero de 2011
Rutas y helpers




        /app/layouts/
     application.html.erb

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

miércoles 2 de febrero de 2011
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
¿Preguntas sobre lo de
                             ayer?


miércoles 2 de febrero de 2011
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
Test funcionales
                            /test/functional/users_controller_test.rb




miércoles 2 de febrero de 2011
... para login/logout también
                       /test/functionals/sessions_controller_test.rb




miércoles 2 de febrero de 2011
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.rb




miércoles 2 de febrero de 2011
Ejecutamos todos los tests, tanto Unit como Functional

                                 $ rake test




miércoles 2 de febrero de 2011
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
Siguiente

            Ahora que ya estamos loggeados, necesitamos poder
                             publicar tweets




miércoles 2 de febrero de 2011
Demo



miércoles 2 de febrero de 2011
Modelo Tweet
$ rails generate scaffold Tweet content:string user:references




                                   $ rake db:migrate




miércoles 2 de febrero de 2011
Modelo Tweet
Active Record nos “regala” métodos para definir relaciones
                     entre modelos




miércoles 2 de febrero de 2011
Rails console
                                   $ rails console




miércoles 2 de febrero de 2011
Lo que sale del scaffold




   Lo que queremos
       conseguir



miércoles 2 de febrero de 2011
Poblamos la base de datos con datos
                     de prueba con un “rake task”
                                 /lib/tasks/tweets.rake




miércoles 2 de febrero de 2011
/app/views/tweets/index.html.erb
                                                           Lo que sale del scaffold




        Modificado




miércoles 2 de febrero de 2011
Helper




miércoles 2 de febrero de 2011
¡A programar!



miércoles 2 de febrero de 2011
Ahora queremos ahorrarle un click al usuario incluyendo el
   el formulario directamente en el listado de tweets




miércoles 2 de febrero de 2011
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
miércoles 2 de febrero de 2011
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
Esta es la función que comprueba
                                 que el usuario está loggeado antes
                                         de poder tweetear




miércoles 2 de febrero de 2011
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
Demo



miércoles 2 de febrero de 2011
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.erb
miércoles 2 de febrero de 2011
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
Tests!



miércoles 2 de febrero de 2011
/test/units/tweet_test.rb




miércoles 2 de febrero de 2011
/test/controllers/tweets_controller_test.rb




miércoles 2 de febrero de 2011
/test/controllers/tweets_controller_test.rb




miércoles 2 de febrero de 2011
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
Nuestro primer test de integración




miércoles 2 de febrero de 2011
¡Os toca!



miércoles 2 de febrero de 2011
Ajax




miércoles 2 de febrero de 2011
Demo



miércoles 2 de febrero de 2011
Prototype: Librería Javascript


                                  Así incluimos la
                                 librería javascript




     Este es el
     HTML que
      genera


miércoles 2 de febrero de 2011
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
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
/app/views/tweets/create.js.erb
         Contiene la respuesta del servidor para el formulario
                         remoto, en javascript.




miércoles 2 de febrero de 2011
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 tweets




miércoles 2 de febrero de 2011
miércoles 2 de febrero de 2011

Más contenido relacionado

PDF
Curso de Ruby on Rails
PDF
Taller ruby
PDF
Ruby Facil
PDF
Curso TDD Ruby on Rails #01: Introducción al testing
PDF
Ruby Mola (y por qué)
PDF
Curso de Ruby on Rails para el Master de Deusto
ODP
Desarrollo de Aplicaciones con Ruby on Rails y PostgreSQL
PDF
Ruby On Rails (Parte II))
Curso de Ruby on Rails
Taller ruby
Ruby Facil
Curso TDD Ruby on Rails #01: Introducción al testing
Ruby Mola (y por qué)
Curso de Ruby on Rails para el Master de Deusto
Desarrollo de Aplicaciones con Ruby on Rails y PostgreSQL
Ruby On Rails (Parte II))

Destacado (20)

PDF
Ruby On Rails (Parte 1. Introducción)
PDF
Curso de introdução ao ruby
PDF
Curso TDD Ruby on Rails #03: Tests unitarios
PDF
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR
PDF
Curso TDD Ruby on Rails #06: Mocks y stubs
PDF
Desarrollo Ágil y Ruby on Rails
PPTX
Conviértete en un desarrollador web front-end
PDF
Desarrollo Agil con Ruby Y Rails
PDF
Sass: CSS con Superpoderes
PDF
CSS Preprocessors - Sass
PPTX
Pre-procesadores CSS. SASS
PDF
Uso de las Infraestructuras de Datos Espaciales en Astronomía
KEY
Ruby intro
PDF
Sass y compass
PDF
Lenguaje de programación Ruby
PPTX
Ruby 101 session 2
PDF
Curso TDD Ruby on Rails #02: Test Driven Development
PDF
Curso TDD Ruby on Rails #08: Buenas prácticas
PPTX
2 Introducción al lenguaje Ruby
PDF
Haml y Sass: HTML y CSS dietéticos
Ruby On Rails (Parte 1. Introducción)
Curso de introdução ao ruby
Curso TDD Ruby on Rails #03: Tests unitarios
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR
Curso TDD Ruby on Rails #06: Mocks y stubs
Desarrollo Ágil y Ruby on Rails
Conviértete en un desarrollador web front-end
Desarrollo Agil con Ruby Y Rails
Sass: CSS con Superpoderes
CSS Preprocessors - Sass
Pre-procesadores CSS. SASS
Uso de las Infraestructuras de Datos Espaciales en Astronomía
Ruby intro
Sass y compass
Lenguaje de programación Ruby
Ruby 101 session 2
Curso TDD Ruby on Rails #02: Test Driven Development
Curso TDD Ruby on Rails #08: Buenas prácticas
2 Introducción al lenguaje Ruby
Haml y Sass: HTML y CSS dietéticos
Publicidad

Similar a Curso de Ruby on Rails para el Master de Deusto. Día 2 (19)

PDF
Curso de Rails para el Master de Deusto, día 4
PDF
Curso de Rails para el Master de Deusto, día 5
PDF
Practica02
PDF
Ro R Universidad
PDF
"Primeros pasos en una start up" por @yusefmartins
ODP
Testing Ruby on Rails (spanish)
PDF
Lectura PFC Events
PDF
Integración WordPress / CodeIgniter - Ing. Enrique E. De Rosa Prieto
PDF
Testing en proyectos Grails del día a día. Greach 2013
PDF
Cursos verano explora
PDF
10 cosas de rails que deberías saber
PPTX
Red Social Twitter
PPTX
PDF
Xculpture
PPTX
Presentacion de proyecto
PDF
Examen final de adm. de aplicaciones web
KEY
Integración de Arel en ActiveRecord
PDF
Html5 telefonica-curso
PDF
Programación orientada a objetos para php5
Curso de Rails para el Master de Deusto, día 4
Curso de Rails para el Master de Deusto, día 5
Practica02
Ro R Universidad
"Primeros pasos en una start up" por @yusefmartins
Testing Ruby on Rails (spanish)
Lectura PFC Events
Integración WordPress / CodeIgniter - Ing. Enrique E. De Rosa Prieto
Testing en proyectos Grails del día a día. Greach 2013
Cursos verano explora
10 cosas de rails que deberías saber
Red Social Twitter
Xculpture
Presentacion de proyecto
Examen final de adm. de aplicaciones web
Integración de Arel en ActiveRecord
Html5 telefonica-curso
Programación orientada a objetos para php5
Publicidad

Último (20)

PDF
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
PDF
Fundamentos_Educacion_a_Distancia_ABC.pdf
PDF
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
PDF
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
PPTX
Welcome to the 8th Physical Science Class 2025-2026
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PPTX
Welcome to the 7th Science Class 2025-2026 Online.pptx
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PPTX
Presentación de la Cetoacidosis diabetica.pptx
DOCX
V UNIDAD - SEGUNDO GRADO. del mes de agosto
PDF
Tomo 1 de biologia gratis ultra plusenmas
PDF
Atencion prenatal. Ginecologia y obsetricia
PDF
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
PDF
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
PDF
Mi Primer Millon - Poissant - Godefroy Ccesa007.pdf
5°-UNIDAD 5 - 2025.pdf aprendizaje 5tooo
Punto Critico - Brian Tracy Ccesa007.pdf
Fundamentos_Educacion_a_Distancia_ABC.pdf
Salvese Quien Pueda - Andres Oppenheimer Ccesa007.pdf
Guia de Tesis y Proyectos de Investigacion FS4 Ccesa007.pdf
Welcome to the 8th Physical Science Class 2025-2026
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
Welcome to the 7th Science Class 2025-2026 Online.pptx
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
Escuelas Desarmando una mirada subjetiva a la educación
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
Presentación de la Cetoacidosis diabetica.pptx
V UNIDAD - SEGUNDO GRADO. del mes de agosto
Tomo 1 de biologia gratis ultra plusenmas
Atencion prenatal. Ginecologia y obsetricia
CONFERENCIA-Deep Research en el aula universitaria-UPeU-EduTech360.pdf
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
V UNIDAD - PRIMER GRADO. del mes de agosto
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
Mi Primer Millon - Poissant - Godefroy Ccesa007.pdf

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

  • 1. 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
  • 2. ¿Qué hicimos ayer? • Registro de usuarios • Login y logout de usuarios • Tests unitarios del modelo usuarios miércoles 2 de febrero de 2011
  • 4. Vistas y Helpers miércoles 2 de febrero de 2011
  • 5. /app/controllers/ sessions_controller.rb /logs/development.log miércoles 2 de febrero de 2011
  • 6. Rutas y helpers /app/layouts/ application.html.erb /app/views/sessions/ new.html.erb mié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_path mié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_tweets miércoles 2 de febrero de 2011
  • 10. Test funcionales /test/functional/users_controller_test.rb miércoles 2 de febrero de 2011
  • 11. ... para login/logout también /test/functionals/sessions_controller_test.rb mié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.rb miércoles 2 de febrero de 2011
  • 13. Ejecutamos todos los tests, tanto Unit como Functional $ rake test mié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 tweets miércoles 2 de febrero de 2011
  • 16. Demo miércoles 2 de febrero de 2011
  • 17. Modelo Tweet $ rails generate scaffold Tweet content:string user:references $ rake db:migrate miércoles 2 de febrero de 2011
  • 18. Modelo Tweet Active Record nos “regala” métodos para definir relaciones entre modelos miércoles 2 de febrero de 2011
  • 19. Rails console $ rails console miércoles 2 de febrero de 2011
  • 20. Lo que sale del scaffold Lo que queremos conseguir miércoles 2 de febrero de 2011
  • 21. Poblamos la base de datos con datos de prueba con un “rake task” /lib/tasks/tweets.rake miércoles 2 de febrero de 2011
  • 22. /app/views/tweets/index.html.erb Lo que sale del scaffold Modificado miércoles 2 de febrero de 2011
  • 23. Helper mié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 tweets miércoles 2 de febrero de 2011
  • 26. 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
  • 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 correspondiente miércoles 2 de febrero de 2011
  • 29. Esta es la función que comprueba que el usuario está loggeado antes de poder tweetear mié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 tweets miércoles 2 de febrero de 2011
  • 31. Demo mié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.erb mié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 formularios miércoles 2 de febrero de 2011
  • 34. Tests! mié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.rb miércoles 2 de febrero de 2011
  • 39. Nuestro primer test de integración miércoles 2 de febrero de 2011
  • 40. ¡Os toca! miércoles 2 de febrero de 2011
  • 41. Ajax miércoles 2 de febrero de 2011
  • 42. Demo miércoles 2 de febrero de 2011
  • 43. Prototype: Librería Javascript Así incluimos la librería javascript Este es el HTML que genera mié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 remota mié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 tweets miércoles 2 de febrero de 2011
  • 48. miércoles 2 de febrero de 2011