SlideShare ist ein Scribd-Unternehmen logo
1 von 57
Downloaden Sie, um offline zu lesen
Ruby on Rails
                      Master Universitario en Desarrollo e Integración de
                                   Soluciones de Software

                                    Universidad de Deusto

                                            Día 1


miércoles 2 de febrero de 2011
¿Qué es Rails?
                     • Plataforma Open Source para la creación
                             de sitios web.
                     • Puntos fuertes:
                      • Baja barrera de entrada
                      • Favorece el desarrollo ágil
                      • Se programa en Ruby
                      • Comunidad muy activa, despierta y
                                 dispuesta a ayudar
                           • ...
miércoles 2 de febrero de 2011
¿Quién usa Rails?

                                                                  shopify.com
                    twitter.com
                                                 basecamphq.com
                                    github.com


                                                                  justin.tv
      yellowpages.com
                                          pragprog.com



miércoles 2 de febrero de 2011
¿Qué vamos a construir?




miércoles 2 de febrero de 2011
¿Qué vamos a construir,
                            hoy?

                 • Que nuestros futuros usuarios puedan
                         registrarse y entrar en la aplicación usando
                         su login y contraseña
                 • http://slidesha.re/h4xuXd


miércoles 2 de febrero de 2011
Lugares de referencia
                     • http://railstutorial.org
                     • Documentación del API de Rails:
                             http://api.rubyonrails.org ó http://railsapi.com
                     • Rails Guides:
                             http://guides.rubyonrails.org/
                     • “Chuletas”:
                             http://blog.envylabs.com/Rails_3_Cheat_Sheets.pdf
miércoles 2 de febrero de 2011
Instalación


                     • Windows: Rails installer
                     • ssh ror<n>@ror.deusto.efaber.net


miércoles 2 de febrero de 2011
MVC




                                 Source: http://www.railstutorial.org
miércoles 2 de febrero de 2011
Esqueleto de nueva aplicación
            [esti@local] $ rails new deusto_app
                 create README                    create   db
                 create Rakefile                   create   lib
                 create Gemfile                    create   log
                 create app                       create   public
                 create app/controllers/          create   public/images
                 create app/helpers/              create   public/stylesheets
                                                  create   public/javascripts
                 create app/mailers/
                                                  create   script
                 create app/models/
                                                  create   test
                 create app/views/                create   vendor/plugins
                create config
                create config/routes.rb
                create config/application.rb
                create config/environment.rb
                create config/initializers
                create config/locales
                create config/boot.rb
                create config/database.yml
miércoles 2 de febrero de 2011
¿Y ahora qué?
                     Rails viene con muchas tareas predefinidas
                     para ponernos en marcha rápidamente

                          •$ cd deusto_app
                          •$ rails --help
                          •$ rails generate --help
                          •$ rake -T



miércoles 2 de febrero de 2011
miércoles 2 de febrero de 2011
$ rails server
                                 http://localhost:3000


                                         Up
                                            a   nd
                                                     ru
                                                         nn
                                                              ing
                                                                 !




miércoles 2 de febrero de 2011
Creación de usuarios
         $ rails generate scaffold User name:string email:string password:string

                create           db/migrate/20110128102008_create_users.rb
                create           app/models/user.rb
                create           test/unit/user_test.rb
                create           test/fixtures/users.yml
                route            resources :users
                create           app/controllers/users_controller.rb
                create           app/views/users
                create           app/views/users/index.html.erb
                create           app/views/users/edit.html.erb
                create           app/views/users/show.html.erb
                create           app/views/users/new.html.erb
                create           app/views/users/_form.html.erb
                create           test/functional/users_controller_test.rb
                create           app/helpers/users_helper.rb
                create           test/unit/helpers/users_helper_test.rb
                create           public/stylesheets/scaffold.css


miércoles 2 de febrero de 2011
Creación de usuarios
         $ rails generate scaffold User name:string email:string password:string

                create           db/migrate/20110128102008_create_users.rb   !!!
                create           app/models/user.rb
                create           test/unit/user_test.rb
                create           test/fixtures/users.yml
                route            resources :users
                create           app/controllers/users_controller.rb
                create           app/views/users
                create           app/views/users/index.html.erb
                create           app/views/users/edit.html.erb
                create           app/views/users/show.html.erb
                create           app/views/users/new.html.erb
                create           app/views/users/_form.html.erb
                create           test/functional/users_controller_test.rb
                create           app/helpers/users_helper.rb
                create           test/unit/helpers/users_helper_test.rb
                create           public/stylesheets/scaffold.css


miércoles 2 de febrero de 2011
La base de datos
                          /db/migrate/<fechahora>_create_users.rb




miércoles 2 de febrero de 2011
$ rake db:migrate




miércoles 2 de febrero de 2011
http://localhost:3000/users



                                                         Voi
                                                             l a!




miércoles 2 de febrero de 2011
Modelo
                                 /app/models/user.rb




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




miércoles 2 de febrero de 2011
Vistas
                                 /app/views/users/index.html.erb




miércoles 2 de febrero de 2011
Rutas




miércoles 2 de febrero de 2011
Demo de scaffold de
                               usuarios




miércoles 2 de febrero de 2011
Mu
                                   cho
                                         me
                                           jor
                                              !




miércoles 2 de febrero de 2011
Introducir algunos records con emails inválidos,
                           duplicados, en blanco...




                                                !!!!!!
                                                         !!




miércoles 2 de febrero de 2011
Validaciones
 ActiveRecord nos da “gratis” métodos para validar los
 campos que introducimos




miércoles 2 de febrero de 2011
Y podemos visualizar los errores de validación
               en el formulario




miércoles 2 de febrero de 2011
Tests

                     • Unit tests: Testean la funcionalidad del
                             modelo
                     • Functional tests: Testean la funcionalidad del
                             controlador y las vistas
                     • Integration tests: Testean el flujo de una
                             visita típica a la web



miércoles 2 de febrero de 2011
Unit Test del modelo User
                                 /tests/unit/user_test.rb


                                  rake db:test:prepare




miércoles 2 de febrero de 2011
Unit Test del modelo User 1/2




miércoles 2 de febrero de 2011
Unit Test del modelo User 2/2




miércoles 2 de febrero de 2011
Ejecutamos el test
             $ cd test
             $ ruby unit/test_user.rb




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



miércoles 2 de febrero de 2011
Empezamos de dónde lo habíamos dejado:
    $ git clone git://github.com/esti/deusto_app.git
    $ git checkout -b 1_user_model 1_user_model

    Ó
    https://github.com/esti/deusto_app/tree/user_model




miércoles 2 de febrero de 2011
Controlador

                                      render /app/views/users/index.html.erb




                                      render /app/views/users/show.html.erb




                                      render /app/views/users/new.html.erb


miércoles 2 de febrero de 2011
ActiveRecord

                     • User.all
                     • User.all.where(:role => ‘admin’).order
                             (:created_at => ‘desc’)
                     • User.find(18)
                     • User.destroy([1,2,3,4])
                                     http://blog.envylabs.com/Rails_3_Cheat_Sheets.pdf

miércoles 2 de febrero de 2011
ActiveRecord
                  Lazy loading:
                      users = User.all.where(:role => “admin”)

                      if params[:order]
                          users = users.order(params[:order])
                      end

                      users.each {|user| user.name} -> Hasta
                      aquí no se toca la base de datos




miércoles 2 de febrero de 2011
Rails console
                                   $ rails console
    La consola rails como el interprete “irb” de Ruby pero con acceso a toda la aplicación
     rails, con todas las clases, métodos, etc. Es muy útil para hacer pruebas y debugging




miércoles 2 de febrero de 2011
Create y update




miércoles 2 de febrero de 2011
Rutas REST
                           ¿Cómo es posible que aparentemente la
                          misma ruta sirva para diferentes acciones?




miércoles 2 de febrero de 2011
Las
                                       rut
                                          as n
                                              os l
                                                     o ex
                                                         plic
                                                             an!




miércoles 2 de febrero de 2011
Rutas
                                           /config/routes.rb




 $ rake routes
   users     GET                 /users(.:format)       {:action=>"index", :controller=>"users"}
             POST                /users(.:format)       {:action=>"create", :controller=>"users"}
   new_user GET                  /users/new(.:format)   {:action=>"new", :controller=>"users"}
   edit_user GET                 /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
   user      GET                 /users/:id(.:format)      {:action=>"show", :controller=>"users"}
             PUT                 /users/:id(.:format)   {:action=>"update", :controller=>"users"}
             DELETE              /users/:id(.:format)   {:action=>"destroy", :controller=>"users"}




miércoles 2 de febrero de 2011
Registro real
        No necesitamos una persona que registre a todos los
        usuarios, sino que cada uno se pueda dar de alta sólo




miércoles 2 de febrero de 2011
Modificamos el tipo del campo de la contraseña
                          y añadimos confirmación




miércoles 2 de febrero de 2011
El campo de confirmación no existe porque no es una
        columna de la tabla en la base de datos. Tenemos que
               definirlo en el modelo explícitamente.




miércoles 2 de febrero de 2011
Definimos el atributo password_confirmation y lo
                       añadimos en las validaciones




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



miércoles 2 de febrero de 2011
Ahora que el usuario se puede registrar, necesitamos que
pueda hacer login para que luego podamos identificar quién
                     hace cada tweet.

                             $ rails generate controller sessions new




miércoles 2 de febrero de 2011
El usuario va a poder identificarse usando su email y la
                  contraseña que dio al registrarse




miércoles 2 de febrero de 2011
Tenemos que definir el método User.authenticate




miércoles 2 de febrero de 2011
Preparamos el formulario para que el usuario pueda hacer
            login con el email y la contraseña
                                 /app/views/sessions/new.html.erb




  El HTML que genera


miércoles 2 de febrero de 2011
Y definimos unas URL cortas más bonitas
                                 •/signup: para registrarse
                                 •/login: para entrar
                                 •/logout: para salir




miércoles 2 de febrero de 2011
Necesitamos links a login/logout en todas las páginas
            de la web. Para esto están los “layouts”. Son las
            plantillas donde suelen ir la cabecera y el pie de
                    página comunes a todas las páginas




miércoles 2 de febrero de 2011
Plantilla principal
                                 /app/views/layouts/application.html.erb




miércoles 2 de febrero de 2011
Necesitamos una función que nos diga si el usuario
                            está loggeado o no
                 /app/controllers/application_controller.rb




miércoles 2 de febrero de 2011
Y ponerlo todo un poco más bonito
                                  /public/stylesheets/application.css




miércoles 2 de febrero de 2011
Demo




miércoles 2 de febrero de 2011

Weitere ähnliche Inhalte

Andere mochten auch

Curso de Ruby on Rails para el Master de Deusto. Día 2
Curso de Ruby on Rails para el Master de Deusto. Día 2Curso de Ruby on Rails para el Master de Deusto. Día 2
Curso de Ruby on Rails para el Master de Deusto. Día 2estialvarez
 
Curso de Ruby on Rails
Curso de Ruby on RailsCurso de Ruby on Rails
Curso de Ruby on RailsASPgems
 
Code Blast 2012 - Ruby on Rails v.2012
Code Blast 2012 - Ruby on Rails v.2012Code Blast 2012 - Ruby on Rails v.2012
Code Blast 2012 - Ruby on Rails v.2012INSIGNIA4U
 
Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011Rafael Franco
 
Curso TDD Ruby on Rails #01: Introducción al testing
Curso TDD Ruby on Rails #01: Introducción al testingCurso TDD Ruby on Rails #01: Introducción al testing
Curso TDD Ruby on Rails #01: Introducción al testingAlberto Perdomo
 

Andere mochten auch (7)

Curso de Ruby on Rails para el Master de Deusto. Día 2
Curso de Ruby on Rails para el Master de Deusto. Día 2Curso de Ruby on Rails para el Master de Deusto. Día 2
Curso de Ruby on Rails para el Master de Deusto. Día 2
 
Taller ruby
Taller rubyTaller ruby
Taller ruby
 
Curso de Ruby on Rails
Curso de Ruby on RailsCurso de Ruby on Rails
Curso de Ruby on Rails
 
Ruby Facil
Ruby FacilRuby Facil
Ruby Facil
 
Code Blast 2012 - Ruby on Rails v.2012
Code Blast 2012 - Ruby on Rails v.2012Code Blast 2012 - Ruby on Rails v.2012
Code Blast 2012 - Ruby on Rails v.2012
 
Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011
 
Curso TDD Ruby on Rails #01: Introducción al testing
Curso TDD Ruby on Rails #01: Introducción al testingCurso TDD Ruby on Rails #01: Introducción al testing
Curso TDD Ruby on Rails #01: Introducción al testing
 

Ähnlich wie Curso de Ruby on Rails para el Master de Deusto

Desarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsDesarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsFreelancer
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on railsJoski Jk
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on RailsJoski Jk
 
Presentacion portlets tools
Presentacion portlets toolsPresentacion portlets tools
Presentacion portlets toolsDavid Calvo
 
Presentacion portlets tools
Presentacion portlets toolsPresentacion portlets tools
Presentacion portlets toolsguest696b01
 
Presentacion portlets-tools
Presentacion portlets-toolsPresentacion portlets-tools
Presentacion portlets-toolsguest696b01
 
UDA-Componentes RUP. Migas
UDA-Componentes RUP. MigasUDA-Componentes RUP. Migas
UDA-Componentes RUP. MigasAnder Martinez
 
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
 
Taller de Introducción a Ruby on Rails (2ª parte)
Taller de Introducción a Ruby on Rails (2ª parte)Taller de Introducción a Ruby on Rails (2ª parte)
Taller de Introducción a Ruby on Rails (2ª parte)Diacode
 
Presentación Ruby on Rails
Presentación Ruby on RailsPresentación Ruby on Rails
Presentación Ruby on RailsGiannis Morales
 
DXAT LENA presentación final
DXAT LENA presentación finalDXAT LENA presentación final
DXAT LENA presentación finalnoemi_arbos
 
Groopify para groopies
Groopify para groopiesGroopify para groopies
Groopify para groopiesGroopify
 
Joserojas Web 2.0
Joserojas Web 2.0Joserojas Web 2.0
Joserojas Web 2.0Jose Rojas
 
Web 2.0, Presentación
Web 2.0, PresentaciónWeb 2.0, Presentación
Web 2.0, Presentaciónrhaennyn
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Nelson Rojas Núñez
 
Genasys sigte2011 open_geogadget_framework (OGF)
Genasys sigte2011 open_geogadget_framework (OGF)Genasys sigte2011 open_geogadget_framework (OGF)
Genasys sigte2011 open_geogadget_framework (OGF)Javier Sánchez
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web modernoSebastián Rocco
 
Herramientas case MobinCube
Herramientas case MobinCubeHerramientas case MobinCube
Herramientas case MobinCubeXaelm
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyJorge Antonio Linares Vera
 

Ähnlich wie Curso de Ruby on Rails para el Master de Deusto (20)

Desarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on RailsDesarrollo de Apps Web en Ruby on Rails
Desarrollo de Apps Web en Ruby on Rails
 
Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Ruby on Rails
Ruby on RailsRuby on Rails
Ruby on Rails
 
Presentacion portlets tools
Presentacion portlets toolsPresentacion portlets tools
Presentacion portlets tools
 
Presentacion portlets tools
Presentacion portlets toolsPresentacion portlets tools
Presentacion portlets tools
 
Presentacion portlets-tools
Presentacion portlets-toolsPresentacion portlets-tools
Presentacion portlets-tools
 
UDA-Componentes RUP. Migas
UDA-Componentes RUP. MigasUDA-Componentes RUP. Migas
UDA-Componentes RUP. Migas
 
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
 
Web 20 Presentacion
Web 20 Presentacion Web 20 Presentacion
Web 20 Presentacion
 
Taller de Introducción a Ruby on Rails (2ª parte)
Taller de Introducción a Ruby on Rails (2ª parte)Taller de Introducción a Ruby on Rails (2ª parte)
Taller de Introducción a Ruby on Rails (2ª parte)
 
Presentación Ruby on Rails
Presentación Ruby on RailsPresentación Ruby on Rails
Presentación Ruby on Rails
 
DXAT LENA presentación final
DXAT LENA presentación finalDXAT LENA presentación final
DXAT LENA presentación final
 
Groopify para groopies
Groopify para groopiesGroopify para groopies
Groopify para groopies
 
Joserojas Web 2.0
Joserojas Web 2.0Joserojas Web 2.0
Joserojas Web 2.0
 
Web 2.0, Presentación
Web 2.0, PresentaciónWeb 2.0, Presentación
Web 2.0, Presentación
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009
 
Genasys sigte2011 open_geogadget_framework (OGF)
Genasys sigte2011 open_geogadget_framework (OGF)Genasys sigte2011 open_geogadget_framework (OGF)
Genasys sigte2011 open_geogadget_framework (OGF)
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web moderno
 
Herramientas case MobinCube
Herramientas case MobinCubeHerramientas case MobinCube
Herramientas case MobinCube
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 

Kürzlich hochgeladen

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 

Kürzlich hochgeladen (15)

trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 

Curso de Ruby on Rails para el Master de Deusto

  • 1. Ruby on Rails Master Universitario en Desarrollo e Integración de Soluciones de Software Universidad de Deusto Día 1 miércoles 2 de febrero de 2011
  • 2. ¿Qué es Rails? • Plataforma Open Source para la creación de sitios web. • Puntos fuertes: • Baja barrera de entrada • Favorece el desarrollo ágil • Se programa en Ruby • Comunidad muy activa, despierta y dispuesta a ayudar • ... miércoles 2 de febrero de 2011
  • 3. ¿Quién usa Rails? shopify.com twitter.com basecamphq.com github.com justin.tv yellowpages.com pragprog.com miércoles 2 de febrero de 2011
  • 4. ¿Qué vamos a construir? miércoles 2 de febrero de 2011
  • 5. ¿Qué vamos a construir, hoy? • Que nuestros futuros usuarios puedan registrarse y entrar en la aplicación usando su login y contraseña • http://slidesha.re/h4xuXd miércoles 2 de febrero de 2011
  • 6. Lugares de referencia • http://railstutorial.org • Documentación del API de Rails: http://api.rubyonrails.org ó http://railsapi.com • Rails Guides: http://guides.rubyonrails.org/ • “Chuletas”: http://blog.envylabs.com/Rails_3_Cheat_Sheets.pdf miércoles 2 de febrero de 2011
  • 7. Instalación • Windows: Rails installer • ssh ror<n>@ror.deusto.efaber.net miércoles 2 de febrero de 2011
  • 8. MVC Source: http://www.railstutorial.org miércoles 2 de febrero de 2011
  • 9. Esqueleto de nueva aplicación [esti@local] $ rails new deusto_app create README create db create Rakefile create lib create Gemfile create log create app create public create app/controllers/ create public/images create app/helpers/ create public/stylesheets create public/javascripts create app/mailers/ create script create app/models/ create test create app/views/ create vendor/plugins create config create config/routes.rb create config/application.rb create config/environment.rb create config/initializers create config/locales create config/boot.rb create config/database.yml miércoles 2 de febrero de 2011
  • 10. ¿Y ahora qué? Rails viene con muchas tareas predefinidas para ponernos en marcha rápidamente •$ cd deusto_app •$ rails --help •$ rails generate --help •$ rake -T miércoles 2 de febrero de 2011
  • 11. miércoles 2 de febrero de 2011
  • 12. $ rails server http://localhost:3000 Up a nd ru nn ing ! miércoles 2 de febrero de 2011
  • 13. Creación de usuarios $ rails generate scaffold User name:string email:string password:string create db/migrate/20110128102008_create_users.rb create app/models/user.rb create test/unit/user_test.rb create test/fixtures/users.yml route resources :users create app/controllers/users_controller.rb create app/views/users create app/views/users/index.html.erb create app/views/users/edit.html.erb create app/views/users/show.html.erb create app/views/users/new.html.erb create app/views/users/_form.html.erb create test/functional/users_controller_test.rb create app/helpers/users_helper.rb create test/unit/helpers/users_helper_test.rb create public/stylesheets/scaffold.css miércoles 2 de febrero de 2011
  • 14. Creación de usuarios $ rails generate scaffold User name:string email:string password:string create db/migrate/20110128102008_create_users.rb !!! create app/models/user.rb create test/unit/user_test.rb create test/fixtures/users.yml route resources :users create app/controllers/users_controller.rb create app/views/users create app/views/users/index.html.erb create app/views/users/edit.html.erb create app/views/users/show.html.erb create app/views/users/new.html.erb create app/views/users/_form.html.erb create test/functional/users_controller_test.rb create app/helpers/users_helper.rb create test/unit/helpers/users_helper_test.rb create public/stylesheets/scaffold.css miércoles 2 de febrero de 2011
  • 15. La base de datos /db/migrate/<fechahora>_create_users.rb miércoles 2 de febrero de 2011
  • 16. $ rake db:migrate miércoles 2 de febrero de 2011
  • 17. http://localhost:3000/users Voi l a! miércoles 2 de febrero de 2011
  • 18. Modelo /app/models/user.rb miércoles 2 de febrero de 2011
  • 19. Controlador app/controllers/users_controller.rb miércoles 2 de febrero de 2011
  • 20. Vistas /app/views/users/index.html.erb miércoles 2 de febrero de 2011
  • 21. Rutas miércoles 2 de febrero de 2011
  • 22. Demo de scaffold de usuarios miércoles 2 de febrero de 2011
  • 23. Mu cho me jor ! miércoles 2 de febrero de 2011
  • 24. Introducir algunos records con emails inválidos, duplicados, en blanco... !!!!!! !! miércoles 2 de febrero de 2011
  • 25. Validaciones ActiveRecord nos da “gratis” métodos para validar los campos que introducimos miércoles 2 de febrero de 2011
  • 26. Y podemos visualizar los errores de validación en el formulario miércoles 2 de febrero de 2011
  • 27. Tests • Unit tests: Testean la funcionalidad del modelo • Functional tests: Testean la funcionalidad del controlador y las vistas • Integration tests: Testean el flujo de una visita típica a la web miércoles 2 de febrero de 2011
  • 28. Unit Test del modelo User /tests/unit/user_test.rb rake db:test:prepare miércoles 2 de febrero de 2011
  • 29. Unit Test del modelo User 1/2 miércoles 2 de febrero de 2011
  • 30. Unit Test del modelo User 2/2 miércoles 2 de febrero de 2011
  • 31. Ejecutamos el test $ cd test $ ruby unit/test_user.rb miércoles 2 de febrero de 2011
  • 32. ¡Os toca! miércoles 2 de febrero de 2011
  • 33. Empezamos de dónde lo habíamos dejado: $ git clone git://github.com/esti/deusto_app.git $ git checkout -b 1_user_model 1_user_model Ó https://github.com/esti/deusto_app/tree/user_model miércoles 2 de febrero de 2011
  • 34. Controlador render /app/views/users/index.html.erb render /app/views/users/show.html.erb render /app/views/users/new.html.erb miércoles 2 de febrero de 2011
  • 35. ActiveRecord • User.all • User.all.where(:role => ‘admin’).order (:created_at => ‘desc’) • User.find(18) • User.destroy([1,2,3,4]) http://blog.envylabs.com/Rails_3_Cheat_Sheets.pdf miércoles 2 de febrero de 2011
  • 36. ActiveRecord Lazy loading: users = User.all.where(:role => “admin”) if params[:order] users = users.order(params[:order]) end users.each {|user| user.name} -> Hasta aquí no se toca la base de datos miércoles 2 de febrero de 2011
  • 37. Rails console $ rails console La consola rails como el interprete “irb” de Ruby pero con acceso a toda la aplicación rails, con todas las clases, métodos, etc. Es muy útil para hacer pruebas y debugging miércoles 2 de febrero de 2011
  • 38. Create y update miércoles 2 de febrero de 2011
  • 39. Rutas REST ¿Cómo es posible que aparentemente la misma ruta sirva para diferentes acciones? miércoles 2 de febrero de 2011
  • 40. Las rut as n os l o ex plic an! miércoles 2 de febrero de 2011
  • 41. Rutas /config/routes.rb $ rake routes users GET /users(.:format) {:action=>"index", :controller=>"users"} POST /users(.:format) {:action=>"create", :controller=>"users"} new_user GET /users/new(.:format) {:action=>"new", :controller=>"users"} edit_user GET /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"} user GET /users/:id(.:format) {:action=>"show", :controller=>"users"} PUT /users/:id(.:format) {:action=>"update", :controller=>"users"} DELETE /users/:id(.:format) {:action=>"destroy", :controller=>"users"} miércoles 2 de febrero de 2011
  • 42. Registro real No necesitamos una persona que registre a todos los usuarios, sino que cada uno se pueda dar de alta sólo miércoles 2 de febrero de 2011
  • 43. Modificamos el tipo del campo de la contraseña y añadimos confirmación miércoles 2 de febrero de 2011
  • 44. El campo de confirmación no existe porque no es una columna de la tabla en la base de datos. Tenemos que definirlo en el modelo explícitamente. miércoles 2 de febrero de 2011
  • 45. Definimos el atributo password_confirmation y lo añadimos en las validaciones miércoles 2 de febrero de 2011
  • 46. miércoles 2 de febrero de 2011
  • 47. Demo miércoles 2 de febrero de 2011
  • 48. Ahora que el usuario se puede registrar, necesitamos que pueda hacer login para que luego podamos identificar quién hace cada tweet. $ rails generate controller sessions new miércoles 2 de febrero de 2011
  • 49. El usuario va a poder identificarse usando su email y la contraseña que dio al registrarse miércoles 2 de febrero de 2011
  • 50. Tenemos que definir el método User.authenticate miércoles 2 de febrero de 2011
  • 51. Preparamos el formulario para que el usuario pueda hacer login con el email y la contraseña /app/views/sessions/new.html.erb El HTML que genera miércoles 2 de febrero de 2011
  • 52. Y definimos unas URL cortas más bonitas •/signup: para registrarse •/login: para entrar •/logout: para salir miércoles 2 de febrero de 2011
  • 53. Necesitamos links a login/logout en todas las páginas de la web. Para esto están los “layouts”. Son las plantillas donde suelen ir la cabecera y el pie de página comunes a todas las páginas miércoles 2 de febrero de 2011
  • 54. Plantilla principal /app/views/layouts/application.html.erb miércoles 2 de febrero de 2011
  • 55. Necesitamos una función que nos diga si el usuario está loggeado o no /app/controllers/application_controller.rb miércoles 2 de febrero de 2011
  • 56. Y ponerlo todo un poco más bonito /public/stylesheets/application.css miércoles 2 de febrero de 2011
  • 57. Demo miércoles 2 de febrero de 2011