Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 1 Ruby on Rails Desarrollo Web Ágil Javier Espinazo Pagán Convocatoria Febrero 2005/2006.

Slides:



Advertisements
Presentaciones similares
JEE Introducción a Java Enterprise Edition (JEE) y el modelo Enterprise Java Beans (EJB)
Advertisements

Presentación de Visual Web Developer 2005 Express Edition Alfonso Goyeneche Torres Presidencia Nacional Comunidad Académica Microsoft Junta Directiva Nacional.
U.M.L A/Gx. Diego Gutiérrez Application Analysis and Design.
Mónica Acosta Yeison Ceballos Carlos Rodallega
Internet y tecnologías web
Diseño de Bases de Datos
CUPS Configuración y Uso de Paquetes de Software
Introducción a HIBERNATE
Modelando aplicaciones
Lenguajes de programación
Arquitectura Orientada a Servicios (SOA)
"java del lado del servidor" Servlet y JSP Java Server Pages.
Desarrollo de Aplicaciones para Internet
Arquitectura de la Aplicación
Model View Controller (MVC)
Curso de PHP Tema 6: Seguridad.
Symfony La Vista y el Controlador (MVC)
85 motivos* para Ruby on Rails
Entornos de programación
Javier López García OBJETIVOS DEL PROYECTO Diseñar una nueva arquitectura para SERVIVOX que le proporcione mayor modularidad y flexibilidad. Reestructurar.
Julio Pacheco SQL SERVER 2005 XML APRENDIENDO CON EJEMPLOS.
Java 2 Platform Enterprise Edition
Características Técnicas
Características generales de un servicio Web.
Ingeniería del Software
INTERFAZ DE ACCES DISEÑO DE BASE DE DATOS
SISTEMA DE GENERACIÓN Y SEGUIMIENTO DE REPARACIÓN DE CONTENEDORES
RESUMENCURSO STRUTS 2 Resumen de lo visto en este tercer módulo: VISTA del framework Struts 2 Debes tener los conceptos muy claros sobre: Results UI Tags.
BASE DE DATOS DISTRIBUIDAS
Ing. CIP Fabián Silva Alvarado
Universidad de Tarapacá Fundamentos Lenguaje y Programación Rodrigo Cornejo Mejías Jonathan Cea Chávez Marcelo Gómez Gonzales.
1er. Comité de Usuarios. Historia ¿Qué hay de nuevo? No más cygwin. Exportación granular: trabajo distribuído. Compilación de metadatos. Manejo.
Contexto: Aplicación gráfica.  Siempre que se piensa en separar la funcionalidad de una aplicación de su interacción con el usuario, bien sea una aplicación.
Persistencia de Objetos. Definicion Persistencia : El la capacidad de un objecto to continuar existiendo despues que su creador (programa que crea este)
© 2009 IBM Corporation End User Programming (Naturalmente) Pablo Pedemonte – SW Engineer 16 Sep 2010.
Bases de Datos Relacionales
Java Server Faces.
ACIDE A C onfigurable I ntegrated D evelopment E nvironment (Un entorno integrado de desarrollo configurable)
Bases de datos en la Web n Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web n Ventajas –Proporcionar.
Diseño de una base de datos Zavaleta Nolasco Karina
InfoPath Ventajas y Uso.
Desarrollo de sitios web con
SPRING MVC.
UNIVERSIDAD NACIONAL AUTONOMA DE MEXICO MODULO IV ADMINISTRACIÓN DE BASES DE DATOS Administración del DBMS E.I. L.E. Prof. Ramón Castro Liceaga SEMINARIO.
Presentado por: Ing. Manuel Rodríguez Coria. Software Freedom Day 26 de Septiembre de 2009Ing. Manuel Rodríguez Coria Quien Soy? Ing.
Lenguajes de programación Web
Patrones de Diseño: Command
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
Lenguajes de programación para la web Lenguaje html Lenguaje java script Es un lenguaje estático para el desarrollo de sitios web Ventajas: Sencillo que.
Tecnologías web. Es el método más común de intercambio de información en la world wide web, el método mediante el cual se transfieren las páginas web.
FRAMEWORK VS Código fuente
Introducción al Lenguaje. ¿ Qué es PHP ? O Hypertext Pre-processoes (PHP) es un lenguaje de "código abierto" interpretado, de alto nivel, embebido en.
Cristian Fonnegra Marin
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
CONTRATOS DE CLIENTES Orlando Sedamano Cornejo Marco Bustinza
Manual violento de Navicat
Tema 11 Bases de Datos y el Lenguaje SQL
GENERADOR DE CÓDIGO FUENTE COBOL
Yeray Caballero López Juan Pablo Quesada Nieves
Colegio de Bachilleres Plantel 13 Xochimilco - Tepepan
HTTP Session Management Desarrollo de Aplicaciones para Internet.
Your Logo ING. FREDY ALEXANDER MARTINEZ. Here comes your footer  Page 2 Este patrón fue descrito por primera vez por Trygve Reenskaug en 1979, y la implementación.
Programación Orientada a Objetos: CLASES Y OBJETOS
Servicios Web Conjunto de aplicaciones o de tecnologías con capacidad para interoperar en la Web. Estas aplicaciones o tecnologías intercambian datos entre.
DLM Transact SQL Sesión I Introducción al SQL Server Uso de las herramientas de consultas del Transact SQL.
DML Transact SQL Sesión X Triggers. Duración 2 Horas.
SIGEP Presentación de Resultados SIGEP. SIGEP Ambiente de Desarrollo  Plataforma Java ( J2EE,JRE,JDK,JVM ).  Contenedor Web ( Tomcat 5 )  Control de.
U niversidad de G uadalajara Centro Universitario de Ciencias Exactas e Ingenierías Ponentes: Muñoz Guzmán Ramón Gallardo Olivares Mario Solís Flores José.
SYMFONY Información del Framework. Síntesis de Symfony  Es un framework diseñado para optimizar el desarrollo de aplicaciones web creado con PHP5. 
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ Ruby on Rails Desarrollo Web Ágil Javier Espinazo Pagán Convocatoria Febrero 2005/2006

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ ¿Qué es Ruby? Lenguaje interpretado Orientado a Objetos Tipado dinámicamente y similar a Perl y Phyton Sintaxis simple, clara y uniforme Biblioteca de clases extensa e intuitiva Utilización de bloques para parametrizar métodos (iteradores, listeners) y bucles Tipos primitivos son también clases y permiten ejecución segura Manejo avanzado de expresiones regulares y cadenas de texto

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ ¿Qué es Ruby? (Ejemplos) def analizar_expresion(texto, expr, entero) if texto =~ expr entero.upto(10) do print "#{$`} >#{$'}“ yield end else “no coincide” end analizar_expresion(“Ruby on Rails”, /R+l/, 8) do print “coincide” end Ruby on >s coincide coincide coincide

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ ¿Qué es Ruby? (Ejemplos) class File def File.open_and_process(*args) f = File.open(*args) yield f f.close() end File.open_and_process("testfile", "r") do |file| while line = file.gets puts line end Linea uno Linea dos …

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ ¿Qué es Rails? Framework de desarrollo web con Ruby Manifiesto Ágil:  Individuo e interacciones antes que procesos y herramientas  Desarrollar software antes que documentar  Colaborar con el cliente antes que negociar contratos  Responder al cambio antes que seguir un plan Don’t Repeat Yourself (DRY)

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ ¿Qué es Rails? (2) Individuo e interacciones antes que procesos y herramientas:  Es más conveniente crear primero el equipo de programación y que éste configure su propio entorno de desarrollo en base a sus necesidades Desarrollar software antes que documentar:  No producir documentos a menos que sean necesarios de forma inmediata. Documentación breve y concisa Colaborar con el cliente antes que negociar contratos:  Interacción constante entre cliente y equipo Responder al cambio antes que seguir un plan:  Planificación flexible y abierta

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ ¿Qué es Rails? (3) Arquitectura Modelo-Vista-Controlador  Modelo: Active Record ORM para Rails Utiliza convenciones para minimizar la configuración Abstracción de alto nivel  Vista: Action View Ficheros RHTML y XML Objetos del Controlador accesibles y variables de entorno Módulos Helper  Controlador: Action Controller Resolución inteligente de dependencias Fácil configuración de dependencias Manejo sencillo de cookies, sesiones y variables de la conexión

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ ¿Qué es Rails? (5) Facilidad de configuración  Minimiza los ficheros de configuración mediante el uso estandarizado y jerárquico de directorios: app/: modelos, vistas y controladores conf/: configuración general y de conexiones a BBDD db/: esquemas de BBDD doc/: documentación autogenerada log/: bitácora de la ejecución script/: scripts de utilidades test/: tests unitarios, funcionales, etc. Diferentes modos de funcionamiento en base al tipo de ejecución

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ El Modelo: Active Record ORM propio de Rails cercano al estándar Facilidad de asociación clase-tabla:  Clase debe heredar de ActiveRecord::Base  Rails asume el nombre de la tabla como el plural del nombre de la clase (método pluralize()).  Permite asociación explícita  Atributos de la clase se infieren en tiempo de ejecución Manejo automatizado de claves primarias

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ El Modelo: Active Record (2) Ejemplo:  Creamos una tabla “orders” de órdenes de compra: create table orders { idintnot null auto_increment, namevarchar(100)not null, varchar(255)not null, addresstextnot null, pay_typechar(10)not null, shipped_atdatetimenull, primary key (id) };

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ El Modelo: Active Record (3) Ejemplo (sigue):  Ahora queremos acceder a un objeto de la tabla “orders”, para lo que declaramos: class Order < ActiveRecord::Base  Rails resuelve las asociaciones y ya podemos utilizar objetos de la tabla: order = Order.find(123) order.name = “Javier Espinazo” order.save

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ El Modelo: Active Record (4) Conectar con una BBDD es tán fácil como rellenar un hash: ActiveRecord::Base.establish_connection( :adapter => “mysql” :host => “servidorBBDD.com” :database => “baseDeDatos” :username => “nombreUsuario” :password => “claveUsuario” ) Las operaciones CRUD se realizan con métodos sencillos:  Crear: creamos un objeto con new() y lo guardamos con save().  Leer: poderoso método find() que admite Clave primaria Consulta explícita en SQL con comodines dinámicos (placeholders)  Actualizar: utilizando save(), update(), update_attribute() o update_attributes()  Borrar: utilizando delete() o delete_all()

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ El Modelo: Active Record (5) Relaciones entre tablas se especifican intuitivamente:  Directivas has_one, has_many, belongs_to y has_and_belongs_to_many en la declaración de clase Las directivas generan métodos para manejar las relaciones Transacciones implementadas como bloques:  Bloques utilizados con el método transaction() de ActiveRecord::Base se ejecutan transaccionalmente  Si se aborta la transacción, los cambios no afectan a la BBDD pero sí al programa cliente  Necesidad de utilizar cláusulas rescue de tratamiento de excepciones para dejar los datos de programa consistentes

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ La vista: Action View Creación programática de ficheros XML: clase Builder Código HTML + código Ruby = plantillas RHTML Variables de instancia del controlador y controlador disponibles en la vista Variables de sesión y conexión disponibles en la vista (menos usadas) Código Ruby al estilo de JSP => duplicación de código y poca legibilidad Solución: módulos Helper

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ La vista: Action View (2) Define métodos que pueden ser llamados por el RHTML => código más corto, más legible y centralizado (principio DRY) Un Helper por defecto para cada controlador y también podemos definir nuevos o compartirlos Ejemplo:  Controlador StoreController tiene StoreHelper : module StoreHelper def = “Título general” end  Ahora en el fichero store.rhtml podemos usar:

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ La vista: Action View (3) Creación programática de enlaces con link_to()  Especificamos mensaje, destino y atributos HTML  También mail_to(), button_to(), etc Ayuda para la paginación de listados grandes  Método paginate() en el controlador y pagination_links() en la vista (RHTML) Helpers específicos para  Formularios (form_tag)  Cuadros de texto, botones, etc.  Permiten asociar los elementos HTML con acciones en los controladores (hash params) Manejo programático de plantillas CSS (layouts)

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ El Controlador: Action Controller Sistema de routing inteligente basado en la jerarquía de la URL:  Ejemplo: ejecuta RepositorioController.obtener_ejemplo(123)  Si no se encuentra levanta excepción method_missing Configuración explícita en routes.rb  ActionController::Routing::Routes.draw  map.connect  Definir asociaciones con patrones (expresiones regulares)  Asociaciones nombradas Creación programática de URLs con url_for()  Utiliza las asociaciones definidas anteriormente  Asume valores por defecto

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ El Controlador: Action Controller (2) Variables de contexto:  request: ip remota, tipo de petición, dominio  params: parámetros de la petición (formularios, URL…)  cookies y session: manejo de sesión en forma de hash  headers: cabeceras HTTP para la respuesta Comunicación entre acciones: flash  Hash similar a un Portapapeles, guarda anotaciones, mensajes de advertencia o error, etc.

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ El Controlador: Action Controller (2) Cookies programáticas intuitivas  Ejemplo: Class CookiesController < ApplicationController def accion_uno cookies[:preferencia] = “música” redirect_to :action => “accion_dos” end def accion_dos cookie_value = cookies[:preferencia] render(:text => “Parece que quiere hablar de #{cookie_value}”) end  Cada cookie es también un hash (:value, :expires, :path)  Manejo similar para sesiones (session)

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ El Controlador: Action Controller (3) Sesiones ofrecen varias propiedades:  database_manager, domain, id, key, path, expires… database_manager => persistencia:  PStore: fichero plano en formato PStore  DRb: BBDD distribuida de objetos para Ruby  Memory: memoria local de la aplicación (  )  File: fichero plano (  )  ActiveRecord: BBDD (MySQL, Oracle, etc.). Creación de tablas mediante DDL y serialización de objetos mediante YAML (similar a Properties de Java)

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ El Controlador: Action Controller (4) Soporte de AOP: filter  after_filter, before_filter, around_filter  Los declara el método filtrado => acoplamiento Verificación se consigue con filtros  Se intancia como un hash. Ejemplo: class BlogController < ApplicationController verify :only => :post_comment, :session => :user_id, :add_flash => { :note => “You must log in”}, :redirect_to => :index … end

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ Otras características Soporte integrado de AJAX:  link_to_remote(), form_remote_tag(), observe_field(), periodically_call_remote()  Efectos gráficos  Callbacks Manejo de s con Action Mailer Web Services con Action Web Service Manejo de escalabilidad basado en persistencia en BBDD centralizada, compartición nula entre aplicaciones y sistema de caché centralizada

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ Conclusiones Desarrollo Web realmente rápido y sencillo Integración de la aplicación Web de forma natural en el código  No hacen falta clases “extrañas” como en EJB o Spring  No hacen falta muchos ficheros de configuración extensos  Utilización de directivas para crear las dependencias  Utilización de jerarquía de directorios para dependencias Los resultados se ven inmediatamente  Modificación “en caliente” de la aplicación en modo desarrollo  Facilita interacción con el cliente

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ Conclusiones (2) Abstracción de la complejidad de negocio  Buena implementación del patrón MVC hace que las clases de negocio sean muy independientes Framework moderno (AJAX, Web Services) Inconvenientes:  Ruby es un lenguaje de muy alto nivel Control limitado sobre eficiencia y rendimiento  Manejo muy abstracto de la BBDD (arma de doble filo)  Convenciones de nombres en inglés (método pluralize()) En general, adecuado para aplicaciones ligeras- intermedias.

Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/ Bibliografía Agile Web Development With Rails  Dave Thomas & David Heinemeier Hansson  The Pragmatic Bookshelf  2005 Programming Ruby 2nd Edition  Dave Thomas  The Pragmatic Bookshelf   Tutorial de Ruby online y descargable