11 agustín cuenca
DESCRIPTION
TRANSCRIPT
Agustín Cuenca
Ruby On RailsASPGems
7.nov.2007
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
misión
convertir el software
en una comodity
nuestra visión: conjunción de elementos
PrincipioMenos es mas
SAS
HerramientasRuby on Rails
MetodologíaSCRUM
menos es más
todo lo que alguien usa alguna vez
vs
solo lo que usa todo el mundo siempre
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
software as a service
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
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]
Ruby
¿Por qué Ruby?
• Permite escribir código fácil de entender en menos lineas
• Es free soft• Extensibilidad• Tiene una comunidad muy
activa
Principios de Ruby
La estética del diseño japonésFoco en los factores humanosPrincipio de la menor sorpresaPrincipio de lo sucinto (breve, compendioso)
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
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
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
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
• MVC– Modelo– Vista– Controlador
• Facilidades adicionales
RAILS
¿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)
BdD
Controlador
Las acciones
MODELO
Las entidades
Navegador
Vista
Las páginas
Petición HTTP Respuesta HTTP
MVC:
20
Modelo
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
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
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, ...
24
VIEW
Plantillas generales
• También se escriben en Ruby• Permiten definir el aspecto base de
las paginas• Plantillas parciales
– Para reutilizar trozos de plantillas
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
27
Controlador
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
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
30
Facilidades adicionales
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
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)
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.
Conclusión
• Simple• Elegante• Integrado• Funciona
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]