Download - Presentacion Ruby on Rails CTIC-Cusco2007
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: [email protected]: Email: [email protected]
Blog: Blog: rubyonrails-cusco.blogspot.com