11 agustín cuenca

35
Agustín Cuenca Ruby On Rails ASPGems 7.nov.2007

Upload: youlivek

Post on 13-Jan-2015

760 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 11 AgustíN Cuenca

Agustín Cuenca

Ruby On RailsASPGems

7.nov.2007

Page 2: 11 AgustíN Cuenca

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

misión

convertir el software

en una comodity

Page 4: 11 AgustíN Cuenca

nuestra visión: conjunción de elementos

PrincipioMenos es mas

SAS

HerramientasRuby on Rails

MetodologíaSCRUM

Page 5: 11 AgustíN Cuenca

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

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

software as a service

Page 8: 11 AgustíN Cuenca

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

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

Ruby

Page 11: 11 AgustíN Cuenca

¿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

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

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

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

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

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

• MVC– Modelo– Vista– Controlador

• Facilidades adicionales

RAILS

Page 18: 11 AgustíN Cuenca

¿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

BdD

Controlador

Las acciones

MODELO

Las entidades

Navegador

Vista

Las páginas

Petición HTTP Respuesta HTTP

MVC:

Page 20: 11 AgustíN Cuenca

20

Modelo

Page 21: 11 AgustíN Cuenca

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

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

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

24

VIEW

Page 25: 11 AgustíN Cuenca

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

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

27

Controlador

Page 28: 11 AgustíN Cuenca

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

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

30

Facilidades adicionales

Page 31: 11 AgustíN Cuenca

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

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

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

Conclusión

• Simple• Elegante• Integrado• Funciona

Page 35: 11 AgustíN Cuenca

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]