Uniendo los puntos
en Ruby On Rails
Rubén Medellín@chubas
Bajo licencia Creative Commons Attribution-Non-Commercial-Share Alike 2.5
WorkshopCamp México25 – 10 – 09
ABSTRACCIONES
Abstracciones
Componentes esenciales de las cosas
Modelo web tradicional
La MAGIAde Rails
NO HAYMAGIA
Entender muy bien los componentes de Rails
¿Qué es Rails?
Tim O'Reilly, fundador de O'Reilly Media
“Ruby on Rails is a breakthrough in lowering the barriers of entry
to programming. Powerful web applications that formerly might have taken weeks or months to develop can be produced in a
matter of days.”
Una que me gusta más
Nathan Torkington, O'Reilly Program Chair for
OSCON
“Ruby on Rails is astounding. Using it is like watching a kung-fu movie, where a dozen bad-ass frameworks prepare to beat up the little newcomer only to be handed
their asses in a variety of imaginative ways.”
Mi propia definición
Rails es una plataforma de desarrollo cuyo
principal objectivo es eliminar la complejidad innecesaria, haciendo el proceso más ágil y al desarrollador más feliz
La “magia” de Ruby on Rails está en sus principios:
• Convention over configuration• Complex framework, simple logic• Test, then code• Don't repeat yourself• Don't reinvent the wheel
• entre otros
MVC en Rails
ActiveRecord+
ActionController+
ActionView
ActiveRecord
ORM – Object Relational Mapper
Database agnostic
Modelos
• save, save!• new, create, create!• delete• find, find_by_*
CRUD
Modelos
• has_many• belongs_to• has_and_belongs_to_many
Relación entre entidades
Modelos
Validaciones Callbacks / Observadores
Validación y procesamiento
ActionController
Procesamiento y resolución de peticiones
Controladores
Recibe peticiones
Accede a los modelos
Prepara una respuesta (generalmente una vista)
Rutas
En base a regexps + opciones
url_for / rutas nombradas
REST
Controladores
Se dividen en acciones
Fat models, thin controllers
Controladores
Tienen acceso al objeto request y sus atributos
Headers, cookies, sesión, parámetros (GET o POST), response
Filtros y wrappers
Se encargan de preparar la respuesta
Respuesta
Por convención, rails regresará una vista con el nombre de la acción
Se puede regresar otra vista, datos (archivos, streams), redirecciones, errores, AJAX
ActionView
•Sistema de templates
•Accede a las variables y datos pasados por el controlador
•La menor lógica posible en las vistas
Pero eso no es todo...
La arquitectura Rails es altamente escalable
• PLUGINS / GEMAS
Plugins para:•OpenID
•Autenticación•Control de acceso
•Roles•Paginación
•APIs externas•(Twitter, Youtube, flickr, google maps)
•Búsqueda (sphinx, ferret)•Vistas•Formas
•CSS
Taller práctico