Presentacion Ruby on Rails en Universidad Autónoma 2009

Post on 02-Jul-2015

150 views 0 download

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, Chile

transcript

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