Uniendo los
                                                                        puntos
                                                                      en Ruby On
                                                                         Rails
                                                                            Rubén Medellín
                                                                                 @chubas

                                                                                WorkshopCamp México
                                                                                25 – 10 – 09
Bajo licencia Creative Commons Attribution-Non-Commercial-Share Alike 2.5
ABSTRACCIONES
Abstraccion
                 es
Component
es
esenciales
de las
cosas
Modelo web tradicional
La   MAGIA
de   Rails
NO HAY
MAGIA




Entender muy bien los
componentes de Rails
¿Qué es Rails?
   “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.”




Tim O'Reilly, fundador
de O'Reilly Media
Una que me gusta más
      “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.”




    Nathan Torkington,
O'Reilly Program Chair for
           OSCON
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


                        CRUD
•   save, save!
•   new, create, create!
•   delete
•   find, find_by_*
Modelos

                 Relación entre
                 entidades
• has_many
• belongs_to
• has_and_belongs_to_many
Modelos

                  Validación y
                  procesamiento

  Validaciones

  Callbacks / Observadores
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

WorkshopCamp Mexico 09 - Uniendo los puntos con Ruby on Rails

  • 1.
    Uniendo los puntos en Ruby On Rails Rubén Medellín @chubas WorkshopCamp México 25 – 10 – 09 Bajo licencia Creative Commons Attribution-Non-Commercial-Share Alike 2.5
  • 2.
  • 3.
    Abstraccion es Component es esenciales de las cosas
  • 4.
  • 6.
    La MAGIA de Rails
  • 7.
    NO HAY MAGIA Entender muybien los componentes de Rails
  • 8.
    ¿Qué es Rails? “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.” Tim O'Reilly, fundador de O'Reilly Media
  • 9.
    Una que megusta más “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.” Nathan Torkington, O'Reilly Program Chair for OSCON
  • 10.
    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
  • 11.
    La “magia” deRuby 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
  • 12.
    MVC en Rails ActiveRecord + ActionController + ActionView
  • 13.
    ActiveRecord ORM – ObjectRelational Mapper Database agnostic
  • 14.
    Modelos CRUD • save, save! • new, create, create! • delete • find, find_by_*
  • 15.
    Modelos Relación entre entidades • has_many • belongs_to • has_and_belongs_to_many
  • 16.
    Modelos Validación y procesamiento  Validaciones  Callbacks / Observadores
  • 17.
  • 18.
    Controladores Recibe peticiones Accede alos modelos Prepara una respuesta (generalmente una vista)
  • 19.
    Rutas En base aregexps + opciones url_for / rutas nombradas REST
  • 20.
    Controladores Se dividen enacciones Fat models, thin controllers
  • 21.
    Controladores Tienen acceso alobjeto request y sus atributos Headers, cookies, sesión, parámetros (GET o POST), response Filtros y wrappers Se encargan de preparar la respuesta
  • 22.
    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
  • 23.
    ActionView •Sistema de templates •Accedea las variables y datos pasados por el controlador •La menor lógica posible en las vistas
  • 24.
    Pero eso noes todo... La arquitectura Rails es altamente escalable • PLUGINS / GEMAS
  • 25.
    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
  • 26.