Este documento presenta una introducción a Ruby on Rails. Explica por qué surgió Rails para facilitar el desarrollo web ágil mediante convenciones. Describe los principios de Rails como DRY y COC, y cómo utiliza MVC. También proporciona ejemplos de empresas que usan Rails como Twitter. Finalmente, ofrece recursos para aprender Ruby y Rails.
2. Índice
¿Por qué surge Ruby on Rails?
¿Quiénes usan Ruby on Rails?
Ruby el Corazón de Rails
Ruby on Rails, el desarrollo ágil
¿Por donde empiezo?
2
04/10/2006 Confidentiel
3. Índice
¿Por qué surge Ruby on Rails?
¿Quiénes usan Ruby on Rails?
Ruby el Corazón de Rails
Ruby on Rails, el desarrollo ágil
¿Por donde empiezo?
3
04/10/2006 Confidentiel
4. ¿Por qué surge Ruby on Rails?
“Convertir las debilidades en
fortalezas”
Sun Tzu. El arte de la guerra
4
04/10/2006 Confidentiel
5. ¿Por qué surge Ruby on Rails?
¿Cómo es un desarrollo web?
Tarea 2 Tarea 5 Tarea 2
Tarea 1
Tarea 4
Tarea 3 Tarea 1
Tarea 1 Tarea 3
Tarea 6
5
04/10/2006 Confidentiel
6. ¿Por qué surge Ruby on Rails?
¿Cómo es un desarrollo web?
Limitaciones de Tiempo
Limitaciones de Personas
Limitaciones de Distancia
Limitaciones Económicas
Limitaciones de Recursos
¡Necesitamos atacar nuestras limitaciones!
6
04/10/2006 Confidentiel
7. ¿Por qué surge Ruby on Rails?
Proyecto “Lateral”
Menos Personas
Menos Tiempo
Menos Presupuesto
Más Creatividad
Menos Código
Menos Errores
Más Productivo
7
04/10/2006 Confidentiel
8. ¿Por qué surge Ruby on Rails?
Del Producto al Framework
Problemas reales, Soluciones reales
8
04/10/2006 Confidentiel
9. ¿Por qué surge Ruby on Rails?
Real
basado en necesidades reales
DRY
eliminando tareas repetitivas
COC
adoptando convenciones
Ágil
abierto a cambios en desarrollo
9
04/10/2006 Confidentiel
10. ¿Por qué surge Ruby on Rails?
Filosofía del diseño de producto …
10
04/10/2006 Confidentiel
11. ¿Por qué surge Ruby on Rails?
¡Comienza por la interfaz!
Una especificación funcional no es funcional
Ni es clara, ni describe lo que quieres
11
04/10/2006 Confidentiel
12. ¿Por qué surge Ruby on Rails?
¡Comienza por la Experiencia de Usuario!
Diseña
Prototipa
Experimenta
Cambia
Aclara y repite
12
04/10/2006 Confidentiel
13. ¿Por qué surge Ruby on Rails?
Get Real!
No se puede hacer clic en
papel o en diagramas
13
04/10/2006 Confidentiel
14. ¿Por qué surge Ruby on Rails?
“Ruby on Rails es un avance en la reducción de barreras de
entrada a la programación. Potentes aplicaciones web que
antes podrían tardar semanas o meses en ser desarrolladas
pueden ser creadas en cuestión de días.”
-Tim O'Reilly, Fundador de O'Reilly Media
14
04/10/2006 Confidentiel
15. Índice
¿Por qué surge Ruby on Rails?
¿Quiénes usan Ruby on Rails?
Ruby el Corazón de Rails
Ruby on Rails, el desarrollo ágil
¿Por donde empiezo?
15
04/10/2006 Confidentiel
16. ¿Quiénes usan Ruby on Rails?
“El progreso y el desarrollo son
imposibles si uno sigue haciendo las
cosas tal como siempre las ha
hecho.”
Wayne W. Dyer
16
04/10/2006 Confidentiel
23. Índice
¿Por qué surge Ruby on Rails?
¿Quiénes usan Ruby on Rails?
Ruby el Corazón de Rails
Ruby on Rails, el desarrollo ágil
¿Por donde empiezo?
23
04/10/2006 Confidentiel
24. Ruby el Corazón de Rails
“Quien no ha probado lo amargo,
no sabe lo que es dulce”
PROVERBIO ALEMÁN
24
04/10/2006 Confidentiel
25. Ruby el Corazón de Rails
Los idiomas influyen (¿determinan?) la manera de pensar de las
personas
Los lenguajes, la de los programadores
Ruby
• Cercano a nuestra forma de pensar
• Lo cual da una experiencia mejor
• ¡Es divertido!
• Te hace sentir inteligente
25
04/10/2006 Confidentiel
26. Ruby el Corazón de Rails
Ruby: lenguaje de programación orientado a objetos
Basado en lenguaje natural
Ayuda al pensamiento humano
Usable: fácil de aprender
Eficiente: menos líneas de código
Felicidad: mejora la experiencia del
programador
Comunidad muy activa
26
04/10/2006 Confidentiel
27. Ruby el Corazón de Rails
La estética del diseño japonés
Minimalista
Foco en factores humanos
Principio de la menor sorpresa
Principio supremo en el diseño de Ruby
Hace felices a los programadores
Hace Ruby mas fácil de aprender
Principio de lo sucinto
• No malgastar tiempo en ficheros de
configuración, getters, setters, etc.
• Cuanto mas rápido programas, más consigues
• Less Code: menos código, menos errores,
menor coste de mantenimiento
27
04/10/2006 Confidentiel
28. Ruby el Corazón de Rails
Orientado a Objetos
TODAS las clases heredan de Object, incluso Class
NO hay primitivas
Ruby usa herencia simple (herencia
múltiple mixings)
Los módulos añaden comportamientos a
las clases
Los operadores ‘+’ y ‘-’ son métodos
28
04/10/2006 Confidentiel
29. Ruby el Corazón de Rails
Lenguaje Dinámico
No hay diferencia entre ‘tiempo de
compilación’ y ‘tiempo de ejecución’
Se pueden crear y modificar clases,
redefinir o añadir métodos, en cualquier
momento
Hasta los tipos básicos, como Class u
Object
29
04/10/2006 Confidentiel
30. Índice
¿Por qué surge Ruby on Rails?
¿Quiénes usan Ruby on Rails?
Ruby el Corazón de Rails
Ruby on Rails, el desarrollo ágil
¿Por donde empiezo?
30
04/10/2006 Confidentiel
31. Ruby on Rails, el desarrollo ágil
“Se debe hacer todo tan sencillo como
sea posible, pero no más sencillo.”
Albert Einstein
31
04/10/2006 Confidentiel
32. Ruby on Rails, el desarrollo ágil
¿Qué es Ruby On Rails?
“Ruby on Rails (RoR) es un entorno de desarrollo web de código
abierto que está optimizado para la felicidad de los programadores y
para la productividad sostenible. Permite escribir un código bello al
favorecer la convención sobre la configuración.”
-- www.rubyonrails.org
32
04/10/2006 Confidentiel
33. Ruby on Rails, el desarrollo ágil
Principios de Ruby on Rails
DRY: Don’t Repeat Yourself (Once and Only Once)
Cada cosa en su sitio
Reducir duplicaciones en código, reduce posibilidad de errores
COC: Convention Over Configuration
El desarrollador sólo necesita definir configuraciones no convencionales
Menor trabajo de desarrollo (scaffolding)
Hace las aplicaciones web más sencillas de entender
33
04/10/2006 Confidentiel
34. Ruby on Rails, el desarrollo ágil
Nativo Web
Desde la web para la web... con todas las consecuencias:
Separación limpia presentación (Vista) negocio (Controlador)
URLs limpias (“tecno-agnósticas”, usables, indexables...)
El interfaz es el producto: AJAX, RJS, conexión con Flash (RIA)...
Conectividad. Orientado a la “Web de Datos”: RSS, Web Services,
SOAP, REST,...
34
04/10/2006 Confidentiel
35. Ruby on Rails, el desarrollo ágil
¿Qué tiene de especial?
Mejores prácticas “empaquetadas”
Diseñado para la “felicidad” del programador
Felicidad + Motivación = Productividad
Entorno de tests y pruebas incluido
Flexibilidad ante los cambios
Velocidad de desarrollo (agilidad)
Belleza del código
35
04/10/2006 Confidentiel
36. Ruby on Rails, el desarrollo ágil
Un sitio para cada cosa
Aplicación
Controladores
Modelos
Vistas
Público
36
04/10/2006 Confidentiel
37. Ruby on Rails, el desarrollo ágil
3 entornos integrados
37
04/10/2006 Confidentiel
38. Ruby on Rails, el desarrollo ágil
MVC (Modelo Vista Controlador)
38
04/10/2006 Confidentiel
39. Ruby on Rails, el desarrollo ágil
MVC (Modelo Vista Controlador)
Modelo: Representación específica de la información. La lógica de datos
asegura la integridad de estos y permite derivar nuevos datos.
Vista: Presenta el modelo en un formato adecuado para interactuar,
usualmente la interfaz de usuario.
Controlador: Responde a eventos, usualmente acciones del usuario e invoca
cambios en el modelo y probablemente en la vista.
39
04/10/2006 Confidentiel
40. Ruby on Rails, el desarrollo ágil
MVC (Modelo Vista Controlador)
40
04/10/2006 Confidentiel
41. Ruby on Rails, el desarrollo ágil
Controlador
Action Controller
Recibe las peticiones HTTP del usuario
Modifica, si es necesario, el modelo según la petición
Prepara la información a mostrar
Selecciona plantilla (Vista) para presentar resultados o gestionar
el diálogo
41
04/10/2006 Confidentiel
42. Ruby on Rails, el desarrollo ágil
Modelo
Active Record
Representa las tablas en la base de datos
Declaración en los modelos, limpia y legible
No es necesario indicar nombre de tablas
Relacionados entre sí de manera predefinida
Convenciones para reducir al mínimo el código
...aunque todo se puede personalizar, claro
42
04/10/2006 Confidentiel
43. Ruby on Rails, el desarrollo ágil
Vista
Action View
Capa de presentación de la aplicación
Plantillas generales (layouts)
Escritas en Ruby (rhtml)
Definen el aspecto base de las páginas que compondrán el sitio o
aplicación web
No afecta negativamente a la accesibilidad web
XML, RSS en la vista
Plantillas rxml
Plantillas parciales (partials)
Reutilización de fragmentos de plantillas (includes)
43
04/10/2006 Confidentiel
44. Ruby on Rails, el desarrollo ágil
Modelo
Migraciones (I)
Las Migraciones son maneras de modificar esquemas de BD desde Rails
Se definen en clases autocontenidas
Puden ser introducidas en el sistema de control de versiones
Se pueden efectuar las siguientes operaciones:
create_table
drop_table
rename_table
add_column
rename_column
change_column
remove_column
add_index
remove_index
44
04/10/2006 Confidentiel
45. Ruby on Rails, el desarrollo ágil
Modelo
Migraciones (II)
Ejemplo: create_users.rb
class CreateUsers < ActiveRecord::Migration
def self.up
create_table :users do |t|
t.column :id, :integer
t.column :username, :string
t.column :password_salt, :string
t.column :password_hash, :string
t.column :email, :string
t.column :created_at, :datetime
end
end
def self.down
drop_table :users
end
end
rake db:migrate
45
04/10/2006 Confidentiel
46. Ruby on Rails, el desarrollo ágil
Scaffolding
Scaffold = Andamio
Crear una estructura inicial de la web
Avance rápido
Pruebas desde el primer momento del modelo y el controlador
Librerías
JavaScript
Tests
MVC integrados
Librerías
Ruby
SCAFFOLDING
46
04/10/2006 Confidentiel
47. Índice
¿Por qué surge Ruby on Rails?
¿Quiénes usan Ruby on Rails?
Ruby el Corazón de Rails
Ruby on Rails, el desarrollo ágil
¿Por donde empiezo?
47
04/10/2006 Confidentiel
48. ¿Por donde empiezo?
“No hay que empezar siempre por la
noción primera de las cosas que se
estudian, sino por aquello que
puede facilitar el aprendizaje.”
Aristóteles
48
04/10/2006 Confidentiel
49. ¿Por donde empiezo?
Lenguaje Rails:
http://www.ruby-lang.org
Ruby on Rails:
http://www.rubyonrails.org/
http://sobrerailes.com
http://www.conferenciarails.org/
49
04/10/2006 Confidentiel