2. 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
8. 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
9. Contacto
Direcció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: info@aspgems.com
11. ¿Por qué Ruby?
• Permite escribir código fácil de
entender en menos lineas
• Es free soft
• Extensibilidad
• Tiene una comunidad muy
activa
12. Principios de Ruby
La estética del diseño japonés
Foco en los factores humanos
Principio de la menor sorpresa
Principio de lo sucinto (breve, compendioso)
13. Principio de la menor
sorpresa
Ejemplos
• El principio
supremo en el ¿De que clase es un objeto?
•
diseño de Ruby o.class
• Hace felices a los ¿Se escribe Array#size o
•
programadores Array#length?
Son dos alias del mismo método
• Hace Ruby mas
fácil de aprender ¿Diferencias entre vectores?
•
diff = ary1 – ary2
union = ary1 + ary2
14. 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
15. 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
16. 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
18. ¿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)
19. MVC:
Navegador
Petición HTTP Respuesta HTTP
Controlador Vista
Las acciones Las páginas
MODELO
Las entidades
BdD
21. 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
22. 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
23. 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, ...
25. Plantillas generales
• También se escriben en Ruby
• Permiten definir el aspecto base de
las paginas
• Plantillas parciales
– Para reutilizar trozos de plantillas
26. 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
•
28. 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
29. 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
31. 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
32. 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)
33. En nuestro piloto
237 LOCs en helpers • Autenticación, ABMC y
•
listados de:
680 en controladores
•
– usuarios, centros,
336 en modelos.
•
empleados
Suman unas 1250 lineas.
•
– 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.