ruby 101 session 5
TRANSCRIPT
![Page 1: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/1.jpg)
INTRODUCCION A SINATRA
Ruby 101
Sergio Castillo Yrizales@scyrizales
![Page 2: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/2.jpg)
Agenda
Sinatra
Repaso
![Page 3: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/3.jpg)
Sinatra
![Page 4: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/4.jpg)
¿Qué es Sinatra?
Es un DSL para desarrollar aplicaciones webPermite crear aplicaciones web con Ruby
mediante el esfuerzo mínimo
![Page 5: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/5.jpg)
Verbos HTTP
Existen varios verbos en http para obtener recursos web.
En sinatra podemos usar:
![Page 6: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/6.jpg)
Trabajando con vistas
Se pueden enviar vistas éstaticas con sinatraCreamos un folder “views”Servimos los archivos mediante el metodo
erb
![Page 7: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/7.jpg)
Que es erb?
Es un lenguaje para escribir templates en ruby
Combina el html con tags para variables ruby
![Page 8: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/8.jpg)
Sentencias útiles de erb
Llamando variables
Recorriendo bucles
Comments
![Page 9: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/9.jpg)
Estructura a una aplicación Sinatra
Usaremos sinatra/base
Luego definimos una clase que herede de base:
Ingresamos las rutas dentro de esta clase y ejecutamos
![Page 10: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/10.jpg)
Recibiendo parametros de un form
Para recibir parametros de un form usamos:
![Page 11: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/11.jpg)
Accesando a objeto request
Se puede llamar desde cualquier rutaPropiedades más usadas
![Page 12: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/12.jpg)
Repaso
![Page 13: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/13.jpg)
Algunos métodos útiles
reverse Invertir una cadena
upcase Mayúsculas
downcase Minúsculas
gsub Reemplazar una cadena por otra
include? Busca una cadena en otra
# para comentarios=begin comentarios de varias lineas=end
![Page 14: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/14.jpg)
! Y ?
En ruby, las funciones que terminan en ! significan una modificación del objeto original
Es bueno recordar que esto es solo una recomendación del lenguaje para funciones que modifican el objeto original
![Page 15: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/15.jpg)
! Y ?
En ruby, las funciones que terminan en ? devuelven un valor boolean (true or false)
Es bueno recordar que esto es solo una recomendación del lenguaje para escribir funciones que retornen booleanos.
![Page 16: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/16.jpg)
If / unless
VS
![Page 17: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/17.jpg)
case when else end
Es una estructura de control especial
Te permite estructurar diversos casos de equivalencias
Puede usarse sin variable inicial:
![Page 18: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/18.jpg)
Bucles - While
Se repite mientras la condición sea verdadera
Cuidado con los bucles infinitos
![Page 19: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/19.jpg)
Bucles - Until
Se repite mientras la condición sea falsa
![Page 20: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/20.jpg)
Bucles - For
Cuando sabes cuantas veces vas a ejecutar un bucle
3 puntos para no incluir el numero final2 puntos para incluirlo
![Page 21: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/21.jpg)
Bucles - Loop
Para ejecutar una sintaxis compleja de codigo
Break sirve para terminarNext para continuar con otro valor
![Page 22: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/22.jpg)
.times
Sirve para repetir un bloque cierto numero de veces
![Page 23: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/23.jpg)
Iterando sobre arreglos
Se usa el comando .each para recorrer arreglos
![Page 24: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/24.jpg)
Creando un Hash
En otros lenguajes los pueden encontrar como diccionarios
![Page 25: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/25.jpg)
Iterando sobre Hashes
Con el comando each y la sintaxis |key, value|
![Page 26: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/26.jpg)
Otra forma de escribir Hashes
Antes era asi (sin Symbols)
Ahora es asi (con Symbols)
![Page 27: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/27.jpg)
Constructor
Es el método que inicia todo en RubySe llama al usar el .newSe define mediante initialize
![Page 28: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/28.jpg)
Variables
Variables de Instancia: @Variables de Clase: @@Variables Globales: $
![Page 29: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/29.jpg)
Métodos
Constructor
De instancia
De clase
![Page 30: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/30.jpg)
Examen
Realizar un pequeño sistema de marcas (Timesheet para Katia)
Debe generar un objeto por cada día marcado el cual consigne hora de entrada y de salida
Se debe calcular las horas transcurridas por cada día Debe haber un objeto que englobe a todas las marcas del mes El sistema debe de marcar automáticamente la hora de entrada y
de salida mediante un solo metodo de marca. (Usar condicionales) Se debe imprimir un consolidado de todas las marcas del mes y el
tiempo trabajado en total. Se tomará en cuenta el uso de clases (6ptos), hashes(4ptos),
condicionales(2ptos), bucles(4ptos) y creatividad(4ptos)
![Page 31: Ruby 101 session 5](https://reader035.vdocuments.site/reader035/viewer/2022062320/559311ad1a28ab62188b45e5/html5/thumbnails/31.jpg)
Muchas gracias