ruby on rails - etyc 2011
DESCRIPTION
Presentación en marco de la ETyC 2011, Asunción - ParaguayTRANSCRIPT
UnaUna introducciónintroducción aa
Ruby on RailsRuby on Rails
Rafael Franco AquinoRafael Franco AquinoDesarrollador web de PuntopyDesarrollador web de Puntopy
Ruby on RailsRuby on Rails
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
OrigenOrigen
RubyRuby
● 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.
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
CaracterísticasCaracterísticas
RubyRuby
Orientación a objetos puraOrientación a objetos pura
RubyRuby
Todo es un objeto
CaracterísticasCaracterísticas
InterpretadoInterpretado
RubyRuby
Es un lenguaje de scripting
CaracterísticasCaracterísticas
Altamente PortableAltamente Portable
RubyRuby
Interprete disponible para los SO más importantes
CaracterísticasCaracterísticas
Altamente DinámicoAltamente Dinámico
RubyRuby
Posee mecanismos altamente dinámicos
CaracterísticasCaracterísticas
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
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
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
Manejo de ExcepcionesManejo de Excepciones
RubyRuby CaracterísticasCaracterísticas
Expresiones Regulares nativasExpresiones Regulares nativas
RubyRuby CaracterísticasCaracterísticas
Sobrecarga de operadoresSobrecarga de operadores
RubyRuby CaracterísticasCaracterísticas
Generador de documentación RDocGenerador de documentación RDoc
RubyRuby CaracterísticasCaracterísticas
Herramienta propia de build: RakeHerramienta propia de build: Rake
RubyRuby CaracterísticasCaracterísticas
RubyRuby
Repositorio Central de “Gemas”Repositorio Central de “Gemas”
CaracterísticasCaracterí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.
RubyRuby
CaracterísticasCaracterísticas
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
OrigenOrigen
Ruby on RailsRuby on Rails
● 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
CaracterísticasCaracterísticas
Ruby on RailsRuby on Rails
● 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
● 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...
● 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...
La filosofíaLa filosofía
Ruby on RailsRuby on Rails
● 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
La ArquitecturaLa Arquitectura
Ruby on RailsRuby on Rails
La Arquitectura MVCLa Arquitectura MVCRuby on RailsRuby on Rails
ModelModel
Ruby on RailsRuby on Rails
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
ViewView
Ruby on RailsRuby on Rails
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
ControllerController
Ruby on RailsRuby on Rails
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
ComponentesComponentes
Ruby on RailsRuby on Rails
PluginsPlugins
Ruby on RailsRuby on Rails
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
GeneradoresGeneradores
Ruby on RailsRuby on Rails
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
HelpersHelpers
Ruby on RailsRuby on Rails
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
ActionMailerActionMailer
Ruby on RailsRuby on Rails
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
RESTREST
Ruby on RailsRuby on Rails
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
TestingTesting
Ruby on RailsRuby on Rails
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
RecursosRecursos
Ruby on RailsRuby on Rails
Ruby on RailsRuby on Rails
http://www.ruby-lang.org/
Ruby on RailsRuby on Rails
http://rubygems.org/
Ruby on RailsRuby on Rails
http://rubyonrails.org/
Ruby on RailsRuby on Rails
http://tryruby.org/
Ruby on RailsRuby on Rails
http://railsforzombies.com/
Ruby on RailsRuby on Rails
http://guides.rubyonrails.org/
ᆰ
Ruby on RailsRuby on Rails
http://railsapi.com/
Ruby on RailsRuby on Rails
http://railscasts.com/
ConclusiónConclusión
Ruby on RailsRuby on Rails
Muchas GraciasMuchas Gracias
Ruby on RailsRuby on Rails
Nos vemos mañanaNos vemos mañana