#{$'}“ yield end else “no coincide” end analizar_expresion(“Ruby on Rails”, /R+l/, 8) do print “coincide” end Ruby on >s coincide coincide coincide"> #{$'}“ yield end else “no coincide” end analizar_expresion(“Ruby on Rails”, /R+l/, 8) do print “coincide” end Ruby on >s coincide coincide coincide">

La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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.

Presentaciones similares


Presentación del tema: "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."— Transcripción de la presentación:

1 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

2 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 2 ¿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

3 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 3 ¿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

4 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 4 ¿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 …

5 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 5 ¿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)

6 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 6 ¿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

7 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 7 ¿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

8 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 8 ¿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

9 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 9 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

10 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 10 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, emailvarchar(255)not null, addresstextnot null, pay_typechar(10)not null, shipped_atdatetimenull, primary key (id) };

11 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 11 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

12 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 12 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()

13 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 13 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

14 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 14 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

15 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 15 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 page_title @page_title = “Título general” end  Ahora en el fichero store.rhtml podemos usar:

16 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 16 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)

17 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 17 El Controlador: Action Controller Sistema de routing inteligente basado en la jerarquía de la URL:  Ejemplo: http://ejemplo.com/repositorio/obtener_ejemplo/123 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

18 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 18 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.

19 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 19 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)

20 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 20 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)

21 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 21 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

22 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 22 Otras características Soporte integrado de AJAX:  link_to_remote(), form_remote_tag(), observe_field(), periodically_call_remote()  Efectos gráficos  Callbacks Manejo de e-mails 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

23 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 23 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

24 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 24 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.

25 Ruby on Rails - Javier Espinazo Pagán - Febrero 2005/2006 25 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  2005 http://www.rubyonrails.org http://www.rubyist.net/~slagell/ruby/index.html  Tutorial de Ruby online y descargable


Descargar ppt "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."

Presentaciones similares


Anuncios Google