63
Una Una introducción introducción a a Ruby on Rails Ruby on Rails Rafael Franco Aquino Rafael Franco Aquino Desarrollador web de Puntopy Desarrollador web de Puntopy

Ruby on Rails - ETyC 2011

Embed Size (px)

DESCRIPTION

Presentación en marco de la ETyC 2011, Asunción - Paraguay

Citation preview

Page 1: Ruby on Rails - ETyC 2011

UnaUna introducciónintroducción aa

Ruby on RailsRuby on Rails

Rafael Franco AquinoRafael Franco AquinoDesarrollador web de PuntopyDesarrollador web de Puntopy

Page 2: Ruby on Rails - ETyC 2011

Ruby on RailsRuby on Rails

Page 3: Ruby on Rails - ETyC 2011

RubyRuby…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

Page 4: Ruby on Rails - ETyC 2011

OrigenOrigen

RubyRuby

Page 5: Ruby on Rails - ETyC 2011

● Su creador se inspiró en sus lenguajes preferidos (Perl, Python, Smalltalk, Eiffel, Ada, y Lisp)

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

RubyRuby

Origen

● Alcanzó reconocimiento masivo a partir del 2006 gracias en parte al framework Ruby on Rails.

Page 6: Ruby on Rails - ETyC 2011

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.

RubyRuby

”– Yukihiro “Matz” Matsumoto

Page 7: Ruby on Rails - ETyC 2011

CaracterísticasCaracterísticas

RubyRuby

Page 8: Ruby on Rails - ETyC 2011

Orientación a objetos puraOrientación a objetos pura

RubyRuby

Todo es un objeto

CaracterísticasCaracterísticas

Page 9: Ruby on Rails - ETyC 2011

InterpretadoInterpretado

RubyRuby

Es un lenguaje de scripting

CaracterísticasCaracterísticas

Page 10: Ruby on Rails - ETyC 2011

Altamente PortableAltamente Portable

RubyRuby

Interprete disponible para los SO más importantes

CaracterísticasCaracterísticas

Page 11: Ruby on Rails - ETyC 2011

Altamente DinámicoAltamente Dinámico

RubyRuby

Posee mecanismos altamente dinámicos

CaracterísticasCaracterísticas

Page 12: Ruby on Rails - ETyC 2011

Introspección de tiposIntrospección de tipos

RubyRuby CaracterísticasCaracterísticas

...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

Page 13: Ruby on Rails - ETyC 2011

ReflexiónReflexión

RubyRuby CaracterísticasCaracterísticas

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

Page 14: Ruby on Rails - ETyC 2011

MetaprogramaciónMetaprogramación

RubyRuby CaracterísticasCaracterísticas

...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

Page 15: Ruby on Rails - ETyC 2011

Manejo de ExcepcionesManejo de Excepciones

RubyRuby CaracterísticasCaracterísticas

Page 16: Ruby on Rails - ETyC 2011

Expresiones Regulares nativasExpresiones Regulares nativas

RubyRuby CaracterísticasCaracterísticas

Page 17: Ruby on Rails - ETyC 2011

Sobrecarga de operadoresSobrecarga de operadores

RubyRuby CaracterísticasCaracterísticas

Page 18: Ruby on Rails - ETyC 2011

Generador de documentación RDocGenerador de documentación RDoc

RubyRuby CaracterísticasCaracterísticas

Page 19: Ruby on Rails - ETyC 2011

Herramienta propia de build: RakeHerramienta propia de build: Rake

RubyRuby CaracterísticasCaracterísticas

Page 20: Ruby on Rails - ETyC 2011

RubyRuby

Repositorio Central de “Gemas”Repositorio Central de “Gemas”

CaracterísticasCaracterísticas

Page 21: Ruby on Rails - ETyC 2011

● 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.

RubyRuby

CaracterísticasCaracterísticas

Page 22: Ruby on Rails - ETyC 2011
Page 23: Ruby on Rails - ETyC 2011

Ruby on RailsRuby 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

Page 24: Ruby on Rails - ETyC 2011

OrigenOrigen

Ruby on RailsRuby on Rails

Page 25: Ruby on Rails - ETyC 2011

● Extraido de un proyecto de 37signals llamada Basecamp.

● Actualmente se encuentra en la versión 3.1

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

Ruby on RailsRuby on Rails

Page 26: Ruby on Rails - ETyC 2011

CaracterísticasCaracterísticas

Ruby on RailsRuby on Rails

Page 27: Ruby on Rails - ETyC 2011

● 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 RailsRuby on Rails

CaracterísticasCaracterísticas

Page 28: Ruby on Rails - ETyC 2011

● 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 RailsRuby on Rails

Características...Características...

Page 29: Ruby on Rails - ETyC 2011

● 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 RailsRuby on Rails

Características...Características...

Page 30: Ruby on Rails - ETyC 2011

La filosofíaLa filosofía

Ruby on RailsRuby on Rails

Page 31: Ruby on Rails - ETyC 2011

● DRY (Don't Repeat Yourself)DRY (Don't Repeat Yourself)

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

● Convention over Configuration.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 RailsRuby on Rails

La FilosofíaLa Filosofía

Page 32: Ruby on Rails - ETyC 2011

La ArquitecturaLa Arquitectura

Ruby on RailsRuby on Rails

Page 33: Ruby on Rails - ETyC 2011

La Arquitectura MVCLa Arquitectura MVCRuby on RailsRuby on Rails

Page 34: Ruby on Rails - ETyC 2011

ModelModel

Ruby on RailsRuby on Rails

Page 35: Ruby on Rails - ETyC 2011

Model (Modelo)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 RailsRuby on Rails

Page 36: Ruby on Rails - ETyC 2011

ViewView

Ruby on RailsRuby on Rails

Page 37: Ruby on Rails - ETyC 2011

View (Vista)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 RailsRuby on Rails

Page 38: Ruby on Rails - ETyC 2011

ControllerController

Ruby on RailsRuby on Rails

Page 39: Ruby on Rails - ETyC 2011

Controller (Controlador)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 RailsRuby on Rails

Page 40: Ruby on Rails - ETyC 2011

ComponentesComponentes

Ruby on RailsRuby on Rails

Page 41: Ruby on Rails - ETyC 2011

PluginsPlugins

Ruby on RailsRuby on Rails

Page 42: Ruby on Rails - ETyC 2011

PluginsPlugins● 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 RailsRuby on Rails

Page 43: Ruby on Rails - ETyC 2011

GeneradoresGeneradores

Ruby on RailsRuby on Rails

Page 44: Ruby on Rails - ETyC 2011

GeneradoresGeneradores● 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 RailsRuby on Rails

Page 45: Ruby on Rails - ETyC 2011

HelpersHelpers

Ruby on RailsRuby on Rails

Page 46: Ruby on Rails - ETyC 2011

HelpersHelpers● 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 RailsRuby on Rails

Page 47: Ruby on Rails - ETyC 2011

ActionMailerActionMailer

Ruby on RailsRuby on Rails

Page 48: Ruby on Rails - ETyC 2011

ActionMailerActionMailer● 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 RailsRuby on Rails

Page 49: Ruby on Rails - ETyC 2011

RESTREST

Ruby on RailsRuby on Rails

Page 50: Ruby on Rails - ETyC 2011

RESTREST● 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 RailsRuby on Rails

Page 51: Ruby on Rails - ETyC 2011

TestingTesting

Ruby on RailsRuby on Rails

Page 52: Ruby on Rails - ETyC 2011

TestingTesting

● 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 RailsRuby on Rails

Page 53: Ruby on Rails - ETyC 2011

RecursosRecursos

Ruby on RailsRuby on Rails

Page 54: Ruby on Rails - ETyC 2011

Ruby on RailsRuby on Rails

http://www.ruby-lang.org/

Page 55: Ruby on Rails - ETyC 2011

Ruby on RailsRuby on Rails

http://rubygems.org/

Page 56: Ruby on Rails - ETyC 2011

Ruby on RailsRuby on Rails

http://rubyonrails.org/

Page 57: Ruby on Rails - ETyC 2011

Ruby on RailsRuby on Rails

http://tryruby.org/

Page 58: Ruby on Rails - ETyC 2011

Ruby on RailsRuby on Rails

http://railsforzombies.com/

Page 59: Ruby on Rails - ETyC 2011

Ruby on RailsRuby on Rails

http://guides.rubyonrails.org/

Page 60: Ruby on Rails - ETyC 2011

Ruby on RailsRuby on Rails

http://railsapi.com/

Page 61: Ruby on Rails - ETyC 2011

Ruby on RailsRuby on Rails

http://railscasts.com/

Page 62: Ruby on Rails - ETyC 2011

ConclusiónConclusión

Ruby on RailsRuby on Rails

Page 63: Ruby on Rails - ETyC 2011

Muchas GraciasMuchas Gracias

Ruby on RailsRuby on Rails

Nos vemos mañanaNos vemos mañana