Presentacion Ruby on Rails CTIC-Cusco2007

Preview:

DESCRIPTION

I Presentacion de Ruby on Rails en la ciudad del Cusco, en el congreso de TIC 2007

Citation preview

I Congreso de Tecnologías de Información y Comunicaciones

Cusco 2007

¿Qué es lo principal (¿Qué es lo principal (por no decir por no decir

primeroprimero) que piensan al momento ) que piensan al momento

de desarrollar una aplicación, de desarrollar una aplicación,

además de la funcionalidad?además de la funcionalidad?además de la funcionalidad?además de la funcionalidad?

¿Diagrama de clases?¿Orientación a Objetos?

¿Cuánto nos pagaran?

¿Interfaz Grafica?

¿UML?

¿Documentación?

¿La base de datos?

¿Lo podremos hacer?

¿Qué es lo principal (¿Qué es lo principal (por no decir por no decir

primeroprimero) que piensan al momento ) que piensan al momento

de desarrollar una aplicación, de desarrollar una aplicación,

además de la funcionalidad?además de la funcionalidad?además de la funcionalidad?además de la funcionalidad?

¿Diagrama de clases?¿Orientación a Objetos?

¿UML?

¿Interfaz Grafica?

¿UML?

¿Documentación?

¿La base de datos?

¿Lo podremos hacer?

Java Ruby

I Congreso de Tecnologías de Información y Comunicaciones

Cusco 2007

Ruby y RailsRuby

Ruby

o Creado por YUKIHIRO MATSUMOTO en los 90’s

o Interpretado

Ruby y Rails

o Dinámico

o Completamente Orientado a Objetos

Ruby

$> ¡Fácil!

o Cercano a nuestra forma de pensar

o Lo cual da una experiencia mejor

Te hace sentir inteligente

Ruby y Rails

$> ¡Fácil!¡Fácil!¡Fácil!¡Fácil!¡Fácil!

$>

o Te hace sentir inteligente

o ¡Es divertido!

Ruby on RailsRuby y Rails

Ruby on RailsRuby y Rails

o Framework de desarrollo web basado en Ruby

o Creado por “David Heinemeier Hanson” (37Signals)

Basecampo Extraído (en principio) de su aplicación Basecamp

o Liberado en 2005 (¡un ascenso meteórico!)

La “Filosofía” de RoR

Ruby y Rails

Modelo - Vista - Controlador Don’t Repeat YourselfModelo - Vista - Controlador Don’t Repeat Yourself

(No te repitas)

Convention Over Configuration

(Convención sobre Configuración)

La “Filosofía” de RoR

Ruby y Rails

o La repetición innecesaria de conocimiento es fuente de errores (incongruencias)

o Y además, es un rollo �o Y además, es un rollo �

Ejemplo

� ¿Definir atributos de una clase?

� ¡¡¡ Si ya los dijimos al crear la tabla !!!

La “Filosofía” de RoR

Ruby y Rails

o En vez de requerir innumerables archivos de configuración, Rails propone defaults razonables

o Que, por supuesto, podemos cambiar (si lo necesitamos)o Que, por supuesto, podemos cambiar (si lo necesitamos)

Ejemplo

� Clase Person ↔ tabla People

� Se puede forzar: set_table_name ´Personas´

� Rails establece una estructura de directorios relativamente rígida

� De esta forma, puede encontrar las cosas a través de convenciones

La “Filosofía” de RoR

Ruby y Rails

Modelo Datos: ActiveRecord

Controlador Lógica de la aplicación: ActionController

Ventajas de la separación

� Código limpio

� DRY

� Facilita el trabajo en equipo

Controlador Lógica de la aplicación: ActionController

Vista Interfaz (web) de usuario: ActionView

Arquitectura

Modelo – Vista - Controlador

1. El navegador manda una petición

2. El controlador interactúa con el Modelo

3. El controlador invoca una Vista

4. La vista se encarga de formar toda la pagina para el navegador

o La “M” de MVC: el Modelo

o Capa ORM: manejo de base de datos con orientación a objetos

o Las tablas son clases

o Las filas son objetos

o Las columnas son atributos

o Sin configuración: todo por convención

o persona.nombre => columna nombre de una fila de la o persona.nombre => columna nombre de una fila de la

tabla personas

Crear una clase (cargar una tabla)

class Persona < ActiveRecord::Base

end

o

o Create

o Read

o Update

o Delete

o CRUD

o

o Read

o Update

o Delete

Crear

p = Persona.new

p.nombre = “Juanca”

p.ciudad = “Cusco”

p.save

p = Persona.create(

:nombre => “Juanca”,

:ciudad => “Cusco”)

o CRUD

o Create

o

o Update

o Delete

Leer/Buscar

persona = Persona.find(3)

personas = Persona.find(

:all,

:conditions =>”ciudad = ‘Cusco’”)

juanca = Persona.find_by_nombre(“Juanca”)

o CRUD

o Create

o Read

o

o Delete

Actualizar/Modificar

juanca = Persona.find_by_nombre(“juanca”)

juanca.ciudad = “Trujillo”

juanca.save

o CRUD

o Create

o Read

o Update

o

Borrar

juanca = Persona.find_by_nombre(“Juanca”)

juanca.destroy

o

o uno a uno

o uno a muchos

o muchos a muchos

o

Lo declaramos en la clase y Rails, a

través convenciones, se encarga de

todo

Ejemplo

class Persona < ActiveRecord::Baseclass Persona < ActiveRecord::Base

belongs_to :grupo

end

class Grupo < ActiveRecord::Base

has_many :personas

end

juanca.grupo.nombre # “CTIC-2007”

ctic.personas[0].nombre # “juanca”

Arquitectura

Modelo – Vista - Controlador

o La “C” de MVC: el Controlador

o Tareas

o Procesa la URL solicitada

o Dirige la petición al controlador correspondienteo

o El controlador realiza la tarea correspondiente, solicitando al

Modelo los datos que necesite

o Renderiza la plantilla (la Vista)

o ActionController usa la ruta para decidir:

o Que controlador se usará

o Que método del mismo se ejecutara

o Que parámetros se le pasaran (array params)

Arquitectura

Modelo – Vista - Controlador

o La “V” de MVC: la Vista

o En principio, hay una plantilla por método

o Se encarga de convertir los datos que le pasa el controlador en el

HTML que se servirá al navegador

RHTML

HTML con código Ruby:<p>Son las <%= Time.now %><p/>

o Helpers

o Funciones que nos ahorran escribir HTML

o Generación de URLs

o Generación de formularios

o Formateo de datos

o Paginación

o …o …

o Podemos definir las nuestras propias

Ejemplo

link_to(‘Ver’, :controller => ‘personas’,

:action => ‘show’, :id => juan.id)

<a href="/personas/show/7">Ver</a>

Ahora viene lo mejor…

Todos abordo

Expositor: Expositor: Juan Carlos Pompilla Ttito

Email: Email: juancarlitos.pompilla@gmail.comEmail: Email: juancarlitos.pompilla@gmail.com

Blog: Blog: rubyonrails-cusco.blogspot.com

Recommended