Una introducción a
Ruby on Rails


    Rafael Franco Aquino
    Desarrollador web de Puntopy
Ruby on Rails
Ruby
…es un lenguaje de programación
dinámico y de código abierto
enfocado en la simplicidad y
productividad. Su elegante sintaxis
se siente natural al leerla y fácil al
escribirla.
                            – Wikipedia
Ruby




       Origen
Ruby
                      Origen
●Creado en 1995 por el programador japonés Yukihiro
"Matz" Matsumoto.




●Su creador se inspiró en sus lenguajes preferidos
(Perl, Python, Smalltalk, Eiffel, Ada, y Lisp)
●Alcanzó reconocimiento masivo a partir del 2006
gracias en parte al framework Ruby on Rails.
Ruby



“   A menudo la gente, especialmente los ingenieros en
    computación, se centran en las máquinas.

    Ellos piensan, "Haciendo esto, la máquina
    funcionará más rápido. Haciendo esto, la máquina
    funcionará de manera más eficiente. Haciendo
    esto..."

    Están centrados en las máquinas, pero en realidad
    necesitamos centrarnos en las personas, en cómo
    hacen programas o cómo manejan las aplicaciones
    en los ordenadores.

    Nosotros somos los jefes. Ellos son los esclavos.
                                                        ”
                                 – Yukihiro “Matz” Matsumoto
Ruby




  Características
Ruby                       Características




Orientación a objetos pura
       Todo es un objeto
Ruby                            Características




         Interpretado
       Es un lenguaje de scripting
Ruby                              Características




      Altamente Portable
Interprete disponible para los SO más importantes
Ruby                         Características




   Altamente Dinámico
  Posee mecanismos altamente dinámicos
Ruby                            Características




  Introspección de tipos
 ...es la capacidad de algunos lenguaje de
 programación orientado a objetos de determinar
 el tipo de un objeto en tiempo de ejecución


                                  – Wikipedia
Ruby                           Características



          Reflexión
 En informática, reflexión (o reflexión
 computacional) es la capacidad que tiene
 un programa de ordenador para observar
 y opcionalmente modificar su estructura
 de alto nivel.

                                  – Wikipedia
Ruby                             Características


      Metaprogramación
...consiste en escribir programas que escriben o
manipulan otros programas (o a sí mismos) como
datos, o que hacen en tiempo de compilación parte
del trabajo que, de otra forma, se haría en tiempo
de ejecución.

Esto permite al programador ahorrar tiempo en la
producción de código.
                                   – Wikipedia
Ruby            Características




 Manejo de Excepciones
Ruby              Características




Expresiones Regulares nativas
Ruby             Características




Sobrecarga de operadores
Ruby             Características




Generador de documentación RDoc
Ruby                Características




Herramienta propia de build: Rake
Ruby              Características


Repositorio Central de “Gemas”
Ruby
                                   Características
●   Gestor de paquetes de Ruby
●Proporciona un formato estándar y
autocontenido (llamado gem)
●Se usa para distribuir programas o librerías
en Ruby
●Posee una herramienta destinada a
gestionar la instalación de éstos.
●   Y un servidor para su distribución.
● Equivalente a CPAN y PEAR en los
lenguajes Perl y PHP, respectivamente.
Ruby on Rails
...es un 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)
                           – Wikipedia
Ruby on Rails




       Origen
Ruby on Rails


●Escrito por David Heinemeier Hansson y liberado en
Julio de 2004.




●Extraido de un proyecto de 37signals llamada
Basecamp.

●   Actualmente se encuentra en la versión 3.1
Ruby on Rails




  Características
Ruby on Rails

                Características
●   Arquitectura Modelo Vista Controlador (MVC).

●   Aprovecha al máximo la Metaprogramación de Ruby.

●Trata de combinar la simplicidad con la posibilidad de
desarrollar aplicaciones del mundo real escribiendo menos
código.

●   Opinionated (un framework con opinión).

●   Cuenta con un potente motor de generación de código.

●Se puede extender su funcionalidad a través de plugins o
gemas.
Ruby on Rails

                Características...
●   Conexión a varios motores de base de datos.

●Manejo de cambios a base de datos a través de
migraciones (con código ruby).

●No se usa SQL directamente en las consultas a base de
datos (pero se puede).

●Unobtrusive AJAX integrado (jQuery por defecto a partir
de la versión 3.1, antes prototype).

●Gran cantidad de Helpers (ayudantes) para generar
elementos repetitivos (formularios, campos, etc.).

●   Cuenta con una consola interactiva
Ruby on Rails

                 Características...
●Manejo de assets (JavaScript, css, imagenes),
comprimido, minificado (a partir de la versión 3.1).

●Cuenta con preprocesadores de CSS y JavaScript por
defecto (CoffeScript y Sass)

●Posee varias tareas rake predefinidas para operaciones
comunes como migraciones, test, etc.

●   Maneja el ruteo de manera muy fácil y dinámico

●   Soporte integrado a Internalización (i18n) y Localización

●   Manejo de “gemas” y sus dependencias
Ruby on Rails




    La filosofía
Ruby on Rails

                     La Filosofía
●   DRY (Don't Repeat Yourself)

No te repitas significa que las definiciones deberían
hacerse una sola vez.



●   Convention over Configuration.

Convención sobre configuración significa que el
programador sólo necesita definir aquella configuración que
no es convencional
Ruby on Rails




  La Arquitectura
Ruby on Rails
         La Arquitectura MVC
Ruby on Rails




       Model
Ruby on Rails


Model (Modelo)
● Clases que presentan a las tablas de la base de datos
● Gestionadas por ActiveRecord

● Mapea automáticamente la tabla y las columnas de la

misma
● Detalla las relaciones entre clases con sentencias de

mapeo objeto relacional
● Se encarga de las rutinas de validación

● Posee un sistema de Callbacks

● Encargada de la “lógica de negocio”
Ruby on Rails




        View
Ruby on Rails

View (Vista)
● Es la lógica de visualización
● Consiste en una cantidad mínima de código incluido en

HTML
● El sistema de plantillas por defecto de Rails es Ruby

Embebido (ERB)
● Se pueden usar otros sistemas de plantillas (como HAML,

Liquid, etc.)
● En ellas se pueden usar los helpers (ayudantes) para

generar formularios, campos y otros elementos.
● Se pueden reutilizar código mediante el uso de partials.

Extrayendo código repetitivo e incluyendólos donde
corresponda
● Se utilizan layouts para definir el maquetado.
Ruby on Rails




     Controller
Ruby on Rails


Controller (Controlador)
● Responden a la interacción del usuario e invocan a la
lógica de la aplicación.
● Manipula los datos de las clases del Modelo y muestra los

resultados usando las Vistas
● Son invocados por el usuario usando el navegador web

● La implementación del Controlador es manejada por el

ActionPack de Rails, que contiene la clase ActionController
● Presenta los datos usando el archivo de plantilla

/app/views/ejemplo/método.html.erb
Ruby on Rails




   Componentes
Ruby on Rails




       Plugins
Ruby on Rails


Plugins
● Una forma para que los desarrolladores puedan compartir
ideas nuevas sin perjudicar a la base de código estable.

●Una arquitectura segmentada para que las unidades de
código puede ser corregidas o actualizadas con calendarios
de lanzamientos propios.

● Una salida para los desarrolladores principales de manera
que no tengan que incluir todas las características nuevas e
interesantes.
Ruby on Rails




    Generadores
Ruby on Rails


Generadores
●Son básicamente scripts de Ruby que generan una serie
de modelos, vistas, controladores, etc.

●   Son fácilmemente personalizables.

● Agilizan de sobre manera la creación de códigos
repetitivos como ABM, etc.

●Los plugins generalmente poseen sus propios
generadores para facilitar la instalación o configuración
Ruby on Rails




       Helpers
Ruby on Rails


Helpers
●Es un módulo que ayuda a tus vistas definiendo funciones
para que las mismas sean más que nada HTML y no
contengan demasiado código.

●En un sistema de modelo MVC, la idea es que la vista (la
"V" de MVC) sea tan simple como sea posible.

●   Rails viene con varios Helpers predefinidos.

●Normalmente los helpers producen contenido para el
HTML or Javascript
Ruby on Rails




    ActionMailer
Ruby on Rails


ActionMailer
●Permite enviar mensajes de correo electrónico desde su
aplicación mediante un modelo mailer y vistas.

●En Rails los correos electrónicos son utilizados creando
mailers que se heredan de ActionMailer::Base y están
ubicados en app/mailers

● Los mailers tienen asociado vistas que aparecen junto a
las vistas del controller en app/views.

●Se pueden enviar correos de tipo plain text o con formato
HTML de manera muy simple
Ruby on Rails




        REST
Ruby on Rails


REST
●REST significa Representational State Transfer y es la
base de la arquitectura RESTful.

● REST en términos de los Rails se reduce a dos principios
fundamentales:

     ●   El uso de identificadores de recursos como las
         direcciones URL para representar a los recursos.

     ●   La transferencia de las representaciones del estado de
         ese recurso entre los componentes del sistema.

●   DELETE /fotos/17
Ruby on Rails




       Testing
Ruby on Rails

Testing
●   Rails posee desde sus inicios un sistema de Testing.

●Al generar un model o un controller automáticamente se
crean archivos de esqueleto para las pruebas

●Las pruebas de Rails pueden simular las peticiones del
navegador y de esta manera se puede probar la respuesta
de la aplicación sin la necesidad de un navegador.

●   En Rails 3 existen 4 tipos de pruebas:
    ● Functional (Controller)

    ● Integration (interacción entre Controller)

    ● Unit (Model)

    ● Performance (Benchmarking, Profiling)
Ruby on Rails




     Recursos
Ruby on Rails




     http://www.ruby-lang.org/
Ruby on Rails




      http://rubygems.org/
Ruby on Rails




     http://rubyonrails.org/
Ruby on Rails




       http://tryruby.org/
Ruby on Rails




     http://railsforzombies.com/
Ruby on Rails




                    ᆰ




     http://guides.rubyonrails.org/
Ruby on Rails




       http://railsapi.com/
Ruby on Rails




       http://railscasts.com/
Ruby on Rails




     Conclusión
Ruby on Rails
Muchas Gracias
Nos vemos mañana

Ruby on Rails - ETyC 2011

  • 1.
    Una introducción a Rubyon Rails Rafael Franco Aquino Desarrollador web de Puntopy
  • 2.
  • 3.
    Ruby …es un lenguajede programación dinámico y de código abierto enfocado en la simplicidad y productividad. Su elegante sintaxis se siente natural al leerla y fácil al escribirla. – Wikipedia
  • 4.
    Ruby Origen
  • 5.
    Ruby Origen ●Creado en 1995 por el programador japonés Yukihiro "Matz" Matsumoto. ●Su creador se inspiró en sus lenguajes preferidos (Perl, Python, Smalltalk, Eiffel, Ada, y Lisp) ●Alcanzó reconocimiento masivo a partir del 2006 gracias en parte al framework Ruby on Rails.
  • 6.
    Ruby “ A menudo la gente, especialmente los ingenieros en computación, se centran en las máquinas. Ellos piensan, "Haciendo esto, la máquina funcionará más rápido. Haciendo esto, la máquina funcionará de manera más eficiente. Haciendo esto..." Están centrados en las máquinas, pero en realidad necesitamos centrarnos en las personas, en cómo hacen programas o cómo manejan las aplicaciones en los ordenadores. Nosotros somos los jefes. Ellos son los esclavos. ” – Yukihiro “Matz” Matsumoto
  • 7.
  • 8.
    Ruby Características Orientación a objetos pura Todo es un objeto
  • 9.
    Ruby Características Interpretado Es un lenguaje de scripting
  • 10.
    Ruby Características Altamente Portable Interprete disponible para los SO más importantes
  • 11.
    Ruby Características Altamente Dinámico Posee mecanismos altamente dinámicos
  • 12.
    Ruby Características Introspección de tipos ...es la capacidad de algunos lenguaje de programación orientado a objetos de determinar el tipo de un objeto en tiempo de ejecución – Wikipedia
  • 13.
    Ruby Características Reflexión En informática, reflexión (o reflexión computacional) es la capacidad que tiene un programa de ordenador para observar y opcionalmente modificar su estructura de alto nivel. – Wikipedia
  • 14.
    Ruby Características Metaprogramación ...consiste en escribir programas que escriben o manipulan otros programas (o a sí mismos) como datos, o que hacen en tiempo de compilación parte del trabajo que, de otra forma, se haría en tiempo de ejecución. Esto permite al programador ahorrar tiempo en la producción de código. – Wikipedia
  • 15.
    Ruby Características Manejo de Excepciones
  • 16.
    Ruby Características Expresiones Regulares nativas
  • 17.
    Ruby Características Sobrecarga de operadores
  • 18.
    Ruby Características Generador de documentación RDoc
  • 19.
    Ruby Características Herramienta propia de build: Rake
  • 20.
    Ruby Características Repositorio Central de “Gemas”
  • 21.
    Ruby Características ● Gestor de paquetes de Ruby ●Proporciona un formato estándar y autocontenido (llamado gem) ●Se usa para distribuir programas o librerías en Ruby ●Posee una herramienta destinada a gestionar la instalación de éstos. ● Y un servidor para su distribución. ● Equivalente a CPAN y PEAR en los lenguajes Perl y PHP, respectivamente.
  • 23.
    Ruby on Rails ...esun 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) – Wikipedia
  • 24.
  • 25.
    Ruby on Rails ●Escritopor David Heinemeier Hansson y liberado en Julio de 2004. ●Extraido de un proyecto de 37signals llamada Basecamp. ● Actualmente se encuentra en la versión 3.1
  • 26.
    Ruby on Rails Características
  • 27.
    Ruby on Rails Características ● Arquitectura Modelo Vista Controlador (MVC). ● Aprovecha al máximo la Metaprogramación de Ruby. ●Trata de combinar la simplicidad con la posibilidad de desarrollar aplicaciones del mundo real escribiendo menos código. ● Opinionated (un framework con opinión). ● Cuenta con un potente motor de generación de código. ●Se puede extender su funcionalidad a través de plugins o gemas.
  • 28.
    Ruby on Rails Características... ● Conexión a varios motores de base de datos. ●Manejo de cambios a base de datos a través de migraciones (con código ruby). ●No se usa SQL directamente en las consultas a base de datos (pero se puede). ●Unobtrusive AJAX integrado (jQuery por defecto a partir de la versión 3.1, antes prototype). ●Gran cantidad de Helpers (ayudantes) para generar elementos repetitivos (formularios, campos, etc.). ● Cuenta con una consola interactiva
  • 29.
    Ruby on Rails Características... ●Manejo de assets (JavaScript, css, imagenes), comprimido, minificado (a partir de la versión 3.1). ●Cuenta con preprocesadores de CSS y JavaScript por defecto (CoffeScript y Sass) ●Posee varias tareas rake predefinidas para operaciones comunes como migraciones, test, etc. ● Maneja el ruteo de manera muy fácil y dinámico ● Soporte integrado a Internalización (i18n) y Localización ● Manejo de “gemas” y sus dependencias
  • 30.
    Ruby on Rails La filosofía
  • 31.
    Ruby on Rails La Filosofía ● DRY (Don't Repeat Yourself) No te repitas significa que las definiciones deberían hacerse una sola vez. ● Convention over Configuration. Convención sobre configuración significa que el programador sólo necesita definir aquella configuración que no es convencional
  • 32.
    Ruby on Rails La Arquitectura
  • 33.
    Ruby on Rails La Arquitectura MVC
  • 34.
  • 35.
    Ruby on Rails Model(Modelo) ● Clases que presentan a las tablas de la base de datos ● Gestionadas por ActiveRecord ● Mapea automáticamente la tabla y las columnas de la misma ● Detalla las relaciones entre clases con sentencias de mapeo objeto relacional ● Se encarga de las rutinas de validación ● Posee un sistema de Callbacks ● Encargada de la “lógica de negocio”
  • 36.
  • 37.
    Ruby on Rails View(Vista) ● Es la lógica de visualización ● Consiste en una cantidad mínima de código incluido en HTML ● El sistema de plantillas por defecto de Rails es Ruby Embebido (ERB) ● Se pueden usar otros sistemas de plantillas (como HAML, Liquid, etc.) ● En ellas se pueden usar los helpers (ayudantes) para generar formularios, campos y otros elementos. ● Se pueden reutilizar código mediante el uso de partials. Extrayendo código repetitivo e incluyendólos donde corresponda ● Se utilizan layouts para definir el maquetado.
  • 38.
    Ruby on Rails Controller
  • 39.
    Ruby on Rails Controller(Controlador) ● Responden a la interacción del usuario e invocan a la lógica de la aplicación. ● Manipula los datos de las clases del Modelo y muestra los resultados usando las Vistas ● Son invocados por el usuario usando el navegador web ● La implementación del Controlador es manejada por el ActionPack de Rails, que contiene la clase ActionController ● Presenta los datos usando el archivo de plantilla /app/views/ejemplo/método.html.erb
  • 40.
    Ruby on Rails Componentes
  • 41.
  • 42.
    Ruby on Rails Plugins ●Una forma para que los desarrolladores puedan compartir ideas nuevas sin perjudicar a la base de código estable. ●Una arquitectura segmentada para que las unidades de código puede ser corregidas o actualizadas con calendarios de lanzamientos propios. ● Una salida para los desarrolladores principales de manera que no tengan que incluir todas las características nuevas e interesantes.
  • 43.
    Ruby on Rails Generadores
  • 44.
    Ruby on Rails Generadores ●Sonbásicamente scripts de Ruby que generan una serie de modelos, vistas, controladores, etc. ● Son fácilmemente personalizables. ● Agilizan de sobre manera la creación de códigos repetitivos como ABM, etc. ●Los plugins generalmente poseen sus propios generadores para facilitar la instalación o configuración
  • 45.
  • 46.
    Ruby on Rails Helpers ●Esun módulo que ayuda a tus vistas definiendo funciones para que las mismas sean más que nada HTML y no contengan demasiado código. ●En un sistema de modelo MVC, la idea es que la vista (la "V" de MVC) sea tan simple como sea posible. ● Rails viene con varios Helpers predefinidos. ●Normalmente los helpers producen contenido para el HTML or Javascript
  • 47.
    Ruby on Rails ActionMailer
  • 48.
    Ruby on Rails ActionMailer ●Permiteenviar mensajes de correo electrónico desde su aplicación mediante un modelo mailer y vistas. ●En Rails los correos electrónicos son utilizados creando mailers que se heredan de ActionMailer::Base y están ubicados en app/mailers ● Los mailers tienen asociado vistas que aparecen junto a las vistas del controller en app/views. ●Se pueden enviar correos de tipo plain text o con formato HTML de manera muy simple
  • 49.
  • 50.
    Ruby on Rails REST ●RESTsignifica Representational State Transfer y es la base de la arquitectura RESTful. ● REST en términos de los Rails se reduce a dos principios fundamentales: ● El uso de identificadores de recursos como las direcciones URL para representar a los recursos. ● La transferencia de las representaciones del estado de ese recurso entre los componentes del sistema. ● DELETE /fotos/17
  • 51.
  • 52.
    Ruby on Rails Testing ● Rails posee desde sus inicios un sistema de Testing. ●Al generar un model o un controller automáticamente se crean archivos de esqueleto para las pruebas ●Las pruebas de Rails pueden simular las peticiones del navegador y de esta manera se puede probar la respuesta de la aplicación sin la necesidad de un navegador. ● En Rails 3 existen 4 tipos de pruebas: ● Functional (Controller) ● Integration (interacción entre Controller) ● Unit (Model) ● Performance (Benchmarking, Profiling)
  • 53.
  • 54.
    Ruby on Rails http://www.ruby-lang.org/
  • 55.
    Ruby on Rails http://rubygems.org/
  • 56.
    Ruby on Rails http://rubyonrails.org/
  • 57.
    Ruby on Rails http://tryruby.org/
  • 58.
    Ruby on Rails http://railsforzombies.com/
  • 59.
    Ruby on Rails ᆰ http://guides.rubyonrails.org/
  • 60.
    Ruby on Rails http://railsapi.com/
  • 61.
    Ruby on Rails http://railscasts.com/
  • 62.
    Ruby on Rails Conclusión
  • 63.
    Ruby on Rails MuchasGracias Nos vemos mañana