presentacion ruby on rails en universidad autónoma 2009
DESCRIPTION
Diapositivas de la presentación del fabuloso framework de desarollo Ruby On Rails usando la versión 2. Exposición realizada en el encuentro de Software Libre realizado por la Universidad Autónoma en Talca, ChileTRANSCRIPT
Ruby On Rails
Desarrollo de aplicaciones web sin dolor
por Nelson Rojas Núñez
¿Quién expone?
Nelson Rojas NúñezIng. Ejec. Computación UCM TalcaDesarrollador de día y Docente Universitario algunas noches
¿Qué es Rails?
Es un framework de código abierto escrito en Ruby
que sirve para desarrollar aplicaciones web que
acceden a base de datos
¿Qué tiene de especial?
Puedes desarrollar una aplicación web 10 veces más rápido que lo
que tardarías con un típico framework java y sin sacrificar la
calidad de la aplicación
Algunos escépticos estarán pensando
“Si claro, 10 veces más rápido”... ¿cómo no?
¿Cómo es posible?• Ruby tiene un gran poder y además es sencillo
• Dos principios en RailsoMenos Software (DRY)oConvenciones sobre configuraciones (COC)
DRY
Don't Repeat YourselfNo te repitas!
Menos Software
Menos líneas de códigoMás rápido de implementar
Menos erroresMejor Mantención
** código a dieta **
Convenciones sobre configuraciones
Adiós a los prolijos archivos de configuración
en XMLConvenciones simples
Separación de código
M V C
Modelopara los datos
Vistapara la Interfaz
Controladordirige la orquesta
Modelo
• Para acceder a los datos• Módulo: ActiveRecord• Una clase representa una tabla• Se descubren automáticamente los campos• Se pueden declarar relaciones con otros
modelos/tablas• Se puede personalizar y añadir métodos• CRUD: CREATE READ UPDATE DELETE
Ejemplo de Modelo
class Aviso < ActiveRecord::Base belongs_to :categoria def activo? self.vencimiento > Time.now endend
Vista
• Para decidir el aspecto• Módulo: ActionView• Plantillas en formato Embedded Ruby• HTML con Ruby embebido• Una por cada acción de cada controlador• Corolario: dependen de los controladores• HTML repetitivo, a funciones externas o helpers
Ejemplo de Vista
<h1>Lista de avisos</h1><% for aviso in @avisos %> <p><%= aviso.titulo %></p>
<% end %>
Controlador
• Director de orquesta: recibe las peticiones desde el exterior (browser/vistas), conecta con los modelos y retorna el resultado como vista.
• Módulo: ActionPack• Cada controlador una clase Ruby• Cada método, una acción
Ejemplo de Controlador
class AvisosController < ApplicationController def index @avisos = Aviso.all endend
Arquitectura Rails
Herramientas
• En ./script/ogenerate (genera codigo)oplugin (incluir codigo de 3ros)oserver (servidor simple)oconsole (consola interactiva)odbconsole (consola base datos)o runner (ejecuta trozos de Ruby)
Rakefile
• Similar a make, pero en Ruby• Incluye
o stats (estadisticas)odoc (generar documentacion)o test (realizar pruebas)omigrate (migraciones de BD)
Componentes base
ActiveRecordActionPack
ActiveRecordDatabase agnostic
Capa ORM de RailsTablas como clases
Registros como objetosColumnas como objetosCrecimiento incremental
Ejemplo ActiveRecordcreando la tabla
*con sql normalcreate table avisos (id bigint not null primary key auto_increment,contenido text,categoria_id int,created_at timestamp,updated_at timestamp);
*con el generador de rubyscript/generate model aviso contenido:text categoria_id:integerrake db:migrate
class Aviso < ActiveRecord::Baseend
Ejemplo ActiveRecordTodos los registros de la tabla avisos
*con sql normalselect * from avisos;*con ActiveRecord@avisos = Aviso.find(:all) , o su abreviatura@avisos = Aviso.all
Todos los registros de la categoria 10*con sql normalselect * from avisos where categoria_id = 10;*con ActiveRecord@avisos = Aviso.find_all_by_categoria_id(10) ** metodos mágicos sin siquiera definirlos
Asociaciones en ActiveRecord
class Aviso < ActiveRecord::Basebelongs_to :categoria#proviene de categoriaend
class Categoria < ActiveRecord::Basehas_many :avisos#tiene muchos avisosend
Usuariocategoriasid
avisosidcategoria_id
ActionPack
Compuesto por ActionController y ActionView
Juntos permiten procesar los requerimientos entrantes y
generar las respuestas de salida
ActionController
Recibe las peticiones desde el navegador generalmente de este
modohttp://sitio/controller/action/id
p.e. http://profenelson.cl/posts/show/1Controlador posts, accion show, id = 1
ActionControllerSe puede modificar las rutas para que tengan
mejor aspecto y otro tipo de utilidadPor ejemplo
http://sitio/noticias/2009/11/26
http://sitio/loginmap.login 'login', :controller => 'sessions', :action => 'new'
En vez de usarhttp://sitio/sessions/new
Muy bien Houdini
muéstramelo que tienes!
Lo que dice gente inteligente acerca de Rails"Rails es el framework de desarrollo web mejor
pensado que he usado, y puedo decirlo luego de una década de hacer aplicaciones web para vivir.
He construido mis propios frameworks, he ayudado a desarrollar el API Servlet, y he creado varios servidores web a partir de cero. Nadie lo ha
hecho así antes."
James Duncan Davidson, creador de Tomcat y Ant
Lo que dice gente inteligente acerca de Rails
"Después de investigar el mercado, Ruby on Rails se destacó como la mejor opción. Hemos sido muy
felices con esa decisión. Vamos a seguir construyendo en Rails y consideramos que es una
ventaja clave de negocio. "
Evan Williams, creador de Blogger, Odeo, y Twitter
Lo que dice gente inteligente acerca de Rails
"Rails es la aplicación de Ruby."
Yukihiro Matsumoto, creador de Ruby
Muchas gracias