SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler 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

Mais conteúdo relacionado

Destaque

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
 

Destaque (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
 

Último

ficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primariaficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primariamichel carlos Capillo Dominguez
 
PROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍA
PROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍAPROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍA
PROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍAJoaqunSolrzano
 
Herbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptxHerbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptxArs Erótica
 
Presentación del tema: tecnología educativa
Presentación del tema: tecnología educativaPresentación del tema: tecnología educativa
Presentación del tema: tecnología educativaricardoruizaleman
 
1ro Programación Anual D.P.C.C ACTUALIZADO
1ro Programación Anual D.P.C.C ACTUALIZADO1ro Programación Anual D.P.C.C ACTUALIZADO
1ro Programación Anual D.P.C.C ACTUALIZADODJElvitt
 
GUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdf
GUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdfGUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdf
GUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdfNELLYKATTY
 
Presentación contribuciones socioeconómicas del SUPV 2023
Presentación contribuciones socioeconómicas del SUPV 2023Presentación contribuciones socioeconómicas del SUPV 2023
Presentación contribuciones socioeconómicas del SUPV 2023Ivie
 
GALATAS Y ROMANOS EXAMEN PARA LOS ALUMNO
GALATAS Y ROMANOS EXAMEN PARA LOS ALUMNOGALATAS Y ROMANOS EXAMEN PARA LOS ALUMNO
GALATAS Y ROMANOS EXAMEN PARA LOS ALUMNOJoseAmaya49
 
Evaluacion Diagnostica Matematica 2do C2 Secundaria Ccesa007.pdf
Evaluacion Diagnostica Matematica 2do C2 Secundaria Ccesa007.pdfEvaluacion Diagnostica Matematica 2do C2 Secundaria Ccesa007.pdf
Evaluacion Diagnostica Matematica 2do C2 Secundaria Ccesa007.pdfDemetrio Ccesa Rayme
 
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptxTECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptxFranciscoCruz296518
 
Escrito administrativo técnico y comerciales
Escrito administrativo técnico y comercialesEscrito administrativo técnico y comerciales
Escrito administrativo técnico y comercialesmelanieteresacontrer
 
plan espacios inspiradores para nivel primaria
plan espacios inspiradores para nivel primariaplan espacios inspiradores para nivel primaria
plan espacios inspiradores para nivel primariaElizabeth252489
 
Kirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 linkKirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 linkMaximilianoMaldonado17
 
La Gatera de la Villa nº 51. Revista cultural sobre Madrid..
La Gatera de la Villa nº 51. Revista cultural sobre Madrid..La Gatera de la Villa nº 51. Revista cultural sobre Madrid..
La Gatera de la Villa nº 51. Revista cultural sobre Madrid..La Gatera de la Villa
 
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCERO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCEROCIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCERO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCEROCEIP TIERRA DE PINARES
 
Tema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificaciónTema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificaciónIES Vicent Andres Estelles
 
Xardín de San Carlos (A Coruña) IES Monelos
Xardín de San Carlos (A Coruña) IES MonelosXardín de San Carlos (A Coruña) IES Monelos
Xardín de San Carlos (A Coruña) IES MonelosAgrela Elvixeo
 
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didáctica
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didácticaLa poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didáctica
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didácticaIGNACIO BALLESTER PARDO
 
Evaluacion Diagnostica Matematica 5to C2 Secundaria Ccesa007.pdf
Evaluacion Diagnostica Matematica 5to  C2 Secundaria Ccesa007.pdfEvaluacion Diagnostica Matematica 5to  C2 Secundaria Ccesa007.pdf
Evaluacion Diagnostica Matematica 5to C2 Secundaria Ccesa007.pdfDemetrio Ccesa Rayme
 
COMO SI EL RUIDO PUDIERA MOLESTAR 4TO SECUENCIA.docx
COMO SI EL RUIDO PUDIERA MOLESTAR 4TO SECUENCIA.docxCOMO SI EL RUIDO PUDIERA MOLESTAR 4TO SECUENCIA.docx
COMO SI EL RUIDO PUDIERA MOLESTAR 4TO SECUENCIA.docxAngeles Feu
 

Último (20)

ficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primariaficha de aplicacion para estudiantes El agua para niños de primaria
ficha de aplicacion para estudiantes El agua para niños de primaria
 
PROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍA
PROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍAPROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍA
PROGRAMACIÓN CURRICULAR ANUAL DE CIENCIA Y TECNOLOGÍA
 
Herbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptxHerbert James Drape. Erotismo y sensualidad.pptx
Herbert James Drape. Erotismo y sensualidad.pptx
 
Presentación del tema: tecnología educativa
Presentación del tema: tecnología educativaPresentación del tema: tecnología educativa
Presentación del tema: tecnología educativa
 
1ro Programación Anual D.P.C.C ACTUALIZADO
1ro Programación Anual D.P.C.C ACTUALIZADO1ro Programación Anual D.P.C.C ACTUALIZADO
1ro Programación Anual D.P.C.C ACTUALIZADO
 
GUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdf
GUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdfGUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdf
GUÍA SIANET - Agenda - Tareas - Archivos - Participaciones - Notas.pdf
 
Presentación contribuciones socioeconómicas del SUPV 2023
Presentación contribuciones socioeconómicas del SUPV 2023Presentación contribuciones socioeconómicas del SUPV 2023
Presentación contribuciones socioeconómicas del SUPV 2023
 
GALATAS Y ROMANOS EXAMEN PARA LOS ALUMNO
GALATAS Y ROMANOS EXAMEN PARA LOS ALUMNOGALATAS Y ROMANOS EXAMEN PARA LOS ALUMNO
GALATAS Y ROMANOS EXAMEN PARA LOS ALUMNO
 
Evaluacion Diagnostica Matematica 2do C2 Secundaria Ccesa007.pdf
Evaluacion Diagnostica Matematica 2do C2 Secundaria Ccesa007.pdfEvaluacion Diagnostica Matematica 2do C2 Secundaria Ccesa007.pdf
Evaluacion Diagnostica Matematica 2do C2 Secundaria Ccesa007.pdf
 
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptxTECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
TECNOLOGÍA EDUCATIVA, USO DE LAS TIC.pptx
 
Escrito administrativo técnico y comerciales
Escrito administrativo técnico y comercialesEscrito administrativo técnico y comerciales
Escrito administrativo técnico y comerciales
 
plan espacios inspiradores para nivel primaria
plan espacios inspiradores para nivel primariaplan espacios inspiradores para nivel primaria
plan espacios inspiradores para nivel primaria
 
Kirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 linkKirpi-el-erizo libro descargar pdf 1 link
Kirpi-el-erizo libro descargar pdf 1 link
 
La Gatera de la Villa nº 51. Revista cultural sobre Madrid..
La Gatera de la Villa nº 51. Revista cultural sobre Madrid..La Gatera de la Villa nº 51. Revista cultural sobre Madrid..
La Gatera de la Villa nº 51. Revista cultural sobre Madrid..
 
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCERO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCEROCIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCERO
CIENCIAS SOCIALES SEGUNDO TRIMESTRE TERCERO
 
Tema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificaciónTema 4 Rocas sedimentarias, características y clasificación
Tema 4 Rocas sedimentarias, características y clasificación
 
Xardín de San Carlos (A Coruña) IES Monelos
Xardín de San Carlos (A Coruña) IES MonelosXardín de San Carlos (A Coruña) IES Monelos
Xardín de San Carlos (A Coruña) IES Monelos
 
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didáctica
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didácticaLa poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didáctica
La poesía del encarcelamiento de Raúl Zurita en el aula: una propuesta didáctica
 
Evaluacion Diagnostica Matematica 5to C2 Secundaria Ccesa007.pdf
Evaluacion Diagnostica Matematica 5to  C2 Secundaria Ccesa007.pdfEvaluacion Diagnostica Matematica 5to  C2 Secundaria Ccesa007.pdf
Evaluacion Diagnostica Matematica 5to C2 Secundaria Ccesa007.pdf
 
COMO SI EL RUIDO PUDIERA MOLESTAR 4TO SECUENCIA.docx
COMO SI EL RUIDO PUDIERA MOLESTAR 4TO SECUENCIA.docxCOMO SI EL RUIDO PUDIERA MOLESTAR 4TO SECUENCIA.docx
COMO SI EL RUIDO PUDIERA MOLESTAR 4TO SECUENCIA.docx
 

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