11 agustín cuenca
DESCRIPTION
TRANSCRIPT
![Page 1: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/1.jpg)
Agustín Cuenca
Ruby On RailsASPGems
7.nov.2007
![Page 2: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/2.jpg)
elevator pitch
hacemos software que en lugar de hacer cada vez mas cosas hace menos, pero las importantes, usando las más avanzadas técnicas y métodos de
desarrollo de software
![Page 3: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/3.jpg)
misión
convertir el software
en una comodity
![Page 4: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/4.jpg)
nuestra visión: conjunción de elementos
PrincipioMenos es mas
SAS
HerramientasRuby on Rails
MetodologíaSCRUM
![Page 5: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/5.jpg)
menos es más
todo lo que alguien usa alguna vez
vs
solo lo que usa todo el mundo siempre
![Page 6: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/6.jpg)
nuestros proyectos• alta productividad• velocidad de desarrollo• flexibilidad
file:///../Documents%20and%20Settings/Tirso%20Maldonado/Configuración%20local/Plantillas/logos/Clientes/cliente3.gif
file:///../Documents%20and%20Settings/Tirso%20Maldonado/Configuración%20local/Plantillas/logos/Clientes/cliente4.gif
file:///../Documents%20and%20Settings/Tirso%20Maldonado/Configuración%20local/Plantillas/logos/Clientes/MiRubibn.gif
file:///../Documents%20and%20Settings/Tirso%20Maldonado/Configuración%20local/Plantillas/logos/Clientes/cliente5.gif
file:///../Documents%20and%20Settings/Tirso%20Maldonado/Configuración%20local/Plantillas/logos/Clientes/cliente1.gif
file:///../Documents%20and%20Settings/Tirso%20Maldonado/Configuración%20local/Plantillas/logos/Clientes/cliente2.gif
file:///../Documents%20and%20Settings/Tirso%20Maldonado/Configuración%20local/Plantillas/logos/Clientes/cliente-antevenio.gif
file:///../Documents%20and%20Settings/Tirso%20Maldonado/Configuración%20local/Plantillas/logos/Clientes/cliente-sepomo.giffile:///../Documents%20and%20Settings/Tirso%20Maldonado/Configuración%20local/Plantillas/logos/Clientes/cliente-isea.gif
![Page 7: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/7.jpg)
software as a service
![Page 8: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/8.jpg)
Ruby y Ruby on Rails• Ruby: un lenguaje de programación
• Ruby on Rails: un “open source web application framework“ escrito en Ruby para hacer aplicaciones MVC.
• Combinadas consiguen:
– Alta productividad
– Flexibilidad ante los cambios
– Velocidad de desarrollo
![Page 9: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/9.jpg)
ContactoDirección:
Isla Graciosa nº 2, Despachos 34 y 35, 28700 San Sebastián de los Reyes, Madrid
Teléfonos :
(+34) 91 658 73 32
E-mail: [email protected]
![Page 10: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/10.jpg)
Ruby
![Page 11: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/11.jpg)
¿Por qué Ruby?
• Permite escribir código fácil de entender en menos lineas
• Es free soft• Extensibilidad• Tiene una comunidad muy
activa
![Page 12: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/12.jpg)
Principios de Ruby
La estética del diseño japonésFoco en los factores humanosPrincipio de la menor sorpresaPrincipio de lo sucinto (breve, compendioso)
![Page 13: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/13.jpg)
Principio de la menor sorpresa
• El principio supremo en el diseño de Ruby
• Hace felices a los programadores
• Hace Ruby mas fácil de aprender
Ejemplos
• ¿De que clase es un objeto?o.class
• ¿Se escribe Array#size o Array#length?Son dos alias del mismo método
• ¿Diferencias entre vectores?diff = ary1 – ary2union = ary1 + ary2
![Page 14: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/14.jpg)
Principio de lo sucinto
• O lo que es lo mismo el del menor esfuerzo:
• No queremos malgastar tiempo,– Especialmente en ficheros de configuración,
getters, setters, etc.
• Cuanto mas rápido programas más consigues
• Menos código implica menos errores
![Page 15: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/15.jpg)
Ruby es completamente orientado a objetos
• Todas las clases derivadas de Object incluyendo Class (como en Java) pero no hay primitivas (para nada como Java)
• Ruby usa herencia simple, (la herencia múltiple se consigue con mixings)
• Los módulos permiten añadir comportamientos a las clases
• Reflexión es uno de los muchos mecanismos dinámicos del lenguaje
• Los operadores = o + son en realidad métodos
![Page 16: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/16.jpg)
Convenios de escritura
• Encadenamiento de métodos print array.uniq.sort.reverse
• Los nombres de métodos admiten !(indica cambio) y ? (indica boolean)
array.sort!
• Iteradores y bloques vs. Bucles files.each { |file| process(file) }
• Mayúsculas y minúsculas– Las Clases empiezan con mayúsculas
– Las CONSTANTES siempre en mayúsculas
– Todo lo demás: método o variable local.
– Uso del_en lugar de MezclarMayusculasMinusculas
![Page 17: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/17.jpg)
• MVC– Modelo– Vista– Controlador
• Facilidades adicionales
RAILS
![Page 18: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/18.jpg)
¿Qué es Rails?
• Rails, o Ruby on Rails o RoR es:
• Framework de aplicaciones web de código abierto escrito en el lenguaje de programación Ruby, siguiendo el paradigma de la arquitectura Modelo-Vista-Controlador (MVC)
![Page 19: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/19.jpg)
BdD
Controlador
Las acciones
MODELO
Las entidades
Navegador
Vista
Las páginas
Petición HTTP Respuesta HTTP
MVC:
![Page 20: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/20.jpg)
20
Modelo
![Page 21: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/21.jpg)
Relaciones
• Los modelos (entidades) están relacionados entre si
• Hay varias relaciones definidas en Rails– has many, belongs to, has and
belongs to, etc.• Declaración en los modelos, limpia
y legible• Convenciones para reducir al
mínimo el código..– ...aunque todo se puede personalizar,
claro
![Page 22: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/22.jpg)
Migraciones• Expresan cambios en la base de
datos• Permiten actualizar fácilmente
– Se crean nuevas migraciones con un script
– Para actualizar: rake migrate• Mecanismos de descripción de la
migración:– ActiveRecord para los datos– create table, remove column, etc.
para casos comunes
![Page 23: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/23.jpg)
Observadores
• Permiten ejecutar operaciones relacionadas con los modelos
• Se especifica la lista de observadores de la aplicación
• Diferentes enganches: before validation, after create, before save, ...
![Page 24: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/24.jpg)
24
VIEW
![Page 25: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/25.jpg)
Plantillas generales
• También se escriben en Ruby• Permiten definir el aspecto base de
las paginas• Plantillas parciales
– Para reutilizar trozos de plantillas
![Page 26: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/26.jpg)
Helpers
• Etiquetas HTML• Paginación• Generación de Javascript• Generación de URLs• Operaciones comunes de texto• Formato de números• Generación de trozos de la pagina• Medición de tiempos
![Page 27: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/27.jpg)
27
Controlador
![Page 28: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/28.jpg)
Controlador
• Reciben las peticiones del usuario• Modifican, si es necesario, el
modelo según la petición• Prepara la información a mostrar• Selección la plantilla para:
– presentar resultados– gestionar el diálogo
![Page 29: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/29.jpg)
Filtros
• Permiten ejecutar código antes/después de las acciones
• Permiten saltarse las propias ejecuciones de las acciones
• Muy útiles para autenticación y para filtrado posterior
• Tres tipos:– before filter– after filter– around filter
![Page 30: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/30.jpg)
30
Facilidades adicionales
![Page 31: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/31.jpg)
Un entorno integrado
• Diferentes entornos de configuración– Permiten adaptar la aplicación al
entorno y especificar los datos de conexión a la base de datos
• Valores de configuración:– development, production, test
• Diferentes bases de datos en desarrollo, producción o pruebas
![Page 32: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/32.jpg)
Otras facilidades
• Mapping relacional integrado• Sistema de mailing integrado• Sistema de sindicación (rss)
integrado• Integración con AJAX y
script.acul.us• Templates RJS (DSL para
gestión Ajax)
![Page 33: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/33.jpg)
En nuestro piloto
• 237 LOCs en helpers
• 680 en controladores
• 336 en modelos.
• Suman unas 1250 lineas.
• Autenticación, ABMC y listados de:– usuarios, centros,
empleados– Cálculo de comisiones, el
forecast– Subida y proceso de Excel,
generacion y descarga de CSV,
– Toda la persistencia, uso de Ajax en varios sitios, etc., ...
Además: no hay ni una sola linea de configuración XML.
![Page 34: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/34.jpg)
Conclusión
• Simple• Elegante• Integrado• Funciona
![Page 35: 11 AgustíN Cuenca](https://reader034.vdocumento.com/reader034/viewer/2022051514/54b49eb84a795973368b458e/html5/thumbnails/35.jpg)
ContactoDirección:
Isla Graciosa nº 2, Despachos 34 y 35, 28700 San Sebastián de los Reyes, Madrid
Teléfonos :
(+34) 629 222 222
E-mail: [email protected]