SlideShare a Scribd company logo
1 of 48
Download to read offline
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

More Related Content

Viewers also liked

Curso de introdução ao ruby
Curso de introdução ao rubyCurso de introdução ao ruby
Curso de introdução ao rubyFrancis Wagner
 
Curso TDD Ruby on Rails #03: Tests unitarios
Curso TDD Ruby on Rails #03: Tests unitariosCurso TDD Ruby on Rails #03: Tests unitarios
Curso TDD Ruby on Rails #03: Tests unitariosAlberto Perdomo
 
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR
Jose Rojas Desarrollo Rapido de Aplicaciones con RoRJose Rojas Desarrollo Rapido de Aplicaciones con RoR
Jose Rojas Desarrollo Rapido de Aplicaciones con RoRJose Rojas
 
Curso TDD Ruby on Rails #06: Mocks y stubs
Curso TDD Ruby on Rails #06: Mocks y stubsCurso TDD Ruby on Rails #06: Mocks y stubs
Curso TDD Ruby on Rails #06: Mocks y stubsAlberto Perdomo
 
Desarrollo Ágil y Ruby on Rails
Desarrollo Ágil y Ruby on RailsDesarrollo Ágil y Ruby on Rails
Desarrollo Ágil y Ruby on RailsErnesto Jiménez
 
Conviértete en un desarrollador web front-end
Conviértete en un desarrollador web front-endConviértete en un desarrollador web front-end
Conviértete en un desarrollador web front-endvideo2brain_mx
 
Desarrollo Agil con Ruby Y Rails
Desarrollo Agil con Ruby Y RailsDesarrollo Agil con Ruby Y Rails
Desarrollo Agil con Ruby Y RailsFran Diéguez
 
Sass: CSS con Superpoderes
Sass: CSS con SuperpoderesSass: CSS con Superpoderes
Sass: CSS con SuperpoderesEdgar Parada
 
CSS Preprocessors - Sass
CSS Preprocessors - SassCSS Preprocessors - Sass
CSS Preprocessors - SassLourdes Montano
 
Pre-procesadores CSS. SASS
Pre-procesadores CSS. SASSPre-procesadores CSS. SASS
Pre-procesadores CSS. SASSMarionaCruz
 
Uso de las Infraestructuras de Datos Espaciales en Astronomía
Uso de las Infraestructuras de Datos Espaciales en AstronomíaUso de las Infraestructuras de Datos Espaciales en Astronomía
Uso de las Infraestructuras de Datos Espaciales en AstronomíaJose Gomez Castaño
 
Curso TDD Ruby on Rails #02: Test Driven Development
Curso TDD  Ruby on Rails #02: Test Driven DevelopmentCurso TDD  Ruby on Rails #02: Test Driven Development
Curso TDD Ruby on Rails #02: Test Driven DevelopmentAlberto Perdomo
 
Curso TDD Ruby on Rails #08: Buenas prácticas
Curso TDD Ruby on Rails #08: Buenas prácticasCurso TDD Ruby on Rails #08: Buenas prácticas
Curso TDD Ruby on Rails #08: Buenas prácticasAlberto Perdomo
 
Haml y Sass: HTML y CSS dietéticos
Haml y Sass: HTML y CSS dietéticosHaml y Sass: HTML y CSS dietéticos
Haml y Sass: HTML y CSS dietéticosDAVID GRILLI
 

Viewers also liked (20)

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

Recently uploaded

TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxMartín Ramírez
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...YobanaZevallosSantil1
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALEDUCCUniversidadCatl
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxEribertoPerezRamirez
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORGonella
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDUgustavorojas179704
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...fcastellanos3
 
cuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básicacuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básicaGianninaValeskaContr
 
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptxMonitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptxJUANCARLOSAPARCANARE
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfNataliaMalky1
 
libro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación iniciallibro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación inicialLorenaSanchez350426
 
Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesRaquel Martín Contreras
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Angélica Soledad Vega Ramírez
 

Recently uploaded (20)

TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptxc3.hu3.p1.p3.El ser humano como ser histórico.pptx
c3.hu3.p1.p3.El ser humano como ser histórico.pptx
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
 
DIA INTERNACIONAL DAS FLORESTAS .
DIA INTERNACIONAL DAS FLORESTAS         .DIA INTERNACIONAL DAS FLORESTAS         .
DIA INTERNACIONAL DAS FLORESTAS .
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIOR
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDUFICHA DE MONITOREO Y ACOMPAÑAMIENTO  2024 MINEDU
FICHA DE MONITOREO Y ACOMPAÑAMIENTO 2024 MINEDU
 
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
Estas son las escuelas y colegios que tendrán modalidad no presencial este lu...
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
cuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básicacuadernillo de lectoescritura para niños de básica
cuadernillo de lectoescritura para niños de básica
 
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptxMonitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
Monitoreo a los coordinadores de las IIEE JEC_28.02.2024.vf.pptx
 
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdfLA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
LA OVEJITA QUE VINO A CENAR CUENTO INFANTIL.pdf
 
libro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación iniciallibro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación inicial
 
Técnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materialesTécnicas de grabado y estampación : procesos y materiales
Técnicas de grabado y estampación : procesos y materiales
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...
 

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