3. 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
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
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
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
...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
25. 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
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
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
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”
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.
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
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.
44. 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
46. 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
48. 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
50. 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
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)