Ruby On Rails 
Desarrollo de aplicaciones 
web sin dolor 
por Nelson Rojas Núñez
¿Quién expone? 
Nelson Rojas Núñez 
Ing. Ejec. Computación UCM Talca 
Desarrollador 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 Rails 
oMenos Software (DRY) 
oConvenciones sobre 
configuraciones (COC)
DRY 
Don't Repeat Yourself 
No te repitas!
Menos Software 
Menos líneas de código 
Más rápido de implementar 
Menos errores 
Mejor Mantención 
** código a dieta **
Convenciones sobre 
configuraciones 
Adiós a los prolijos 
archivos de configuración 
en XML 
Convenciones simples
Separación de código 
M V C 
Modelo 
para los datos 
Vista 
para la Interfaz 
Controlador 
dirige 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 
end 
end
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 
end 
end
Arquitectura Rails
Herramientas 
• En ./script/ 
ogenerate (genera codigo) 
o plugin (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) 
o doc (generar documentacion) 
o test (realizar pruebas) 
omigrate (migraciones de BD)
Componentes base 
ActiveRecord 
ActionPack
ActiveRecord 
Database agnostic 
Capa ORM de Rails 
Tablas como clases 
Registros como objetos 
Columnas como objetos 
Crecimiento incremental
Ejemplo ActiveRecord 
creando la tabla 
*con sql normal 
create 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 ruby 
script/generate model aviso contenido:text categoria_id:integer 
rake db:migrate 
class Aviso < ActiveRecord::Base 
end
Ejemplo ActiveRecord 
Todos los registros de la tabla avisos 
*con sql normal 
select * from avisos; 
*con ActiveRecord 
@avisos = Aviso.find(:all) , o su abreviatura 
@avisos = Aviso.all 
Todos los registros de la categoria 10 
*con sql normal 
select * 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::Base 
belongs_to :categoria 
#proviene de categoria 
end 
class Categoria < ActiveRecord::Base 
has_many :avisos 
#tiene muchos avisos 
end 
categUosruiaasrio 
id 
avisos 
id 
categoria_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 
modo 
http://sitio/controller/action/id 
p.e. http://profenelson.cl/posts/show/1 
Controlador posts, accion show, id = 1
ActionController 
Se puede modificar las rutas para que tengan 
mejor aspecto y otro tipo de utilidad 
Por ejemplo 
http://sitio/noticias/2009/11/26 
http://sitio/login 
map.login 'login', :controller => 'sessions', :action => 'new' 
En vez de usar 
http://sitio/sessions/new
Muy bien Houdini 
muéstrame 
lo 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

Presentacion Ruby on Rails en Universidad Autónoma 2009

  • 1.
    Ruby On Rails Desarrollo de aplicaciones web sin dolor por Nelson Rojas Núñez
  • 2.
    ¿Quién expone? NelsonRojas Núñez Ing. Ejec. Computación UCM Talca Desarrollador de día y Docente Universitario algunas noches
  • 3.
    ¿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
  • 4.
    ¿Qué tiene deespecial? 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
  • 5.
    Algunos escépticos estaránpensando “Si claro, 10 veces más rápido”... ¿cómo no?
  • 6.
    ¿Cómo es posible? •Ruby tiene un gran poder y además es sencillo •Dos principios en Rails oMenos Software (DRY) oConvenciones sobre configuraciones (COC)
  • 7.
    DRY Don't RepeatYourself No te repitas!
  • 8.
    Menos Software Menoslíneas de código Más rápido de implementar Menos errores Mejor Mantención ** código a dieta **
  • 9.
    Convenciones sobre configuraciones Adiós a los prolijos archivos de configuración en XML Convenciones simples
  • 11.
    Separación de código M V C Modelo para los datos Vista para la Interfaz Controlador dirige la orquesta
  • 12.
    Modelo • Paraacceder 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
  • 13.
    Ejemplo de Modelo class Aviso < ActiveRecord::Base belongs_to :categoria def activo? self.vencimiento > Time.now end end
  • 14.
    Vista • Paradecidir 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
  • 15.
    Ejemplo de Vista <h1>Lista de avisos</h1> <% for aviso in @avisos %> <p><%= aviso.titulo %></p> <% end %>
  • 16.
    Controlador • Directorde 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
  • 17.
    Ejemplo de Controlador class AvisosController < ApplicationController def index @avisos = Aviso.all end end
  • 18.
  • 19.
    Herramientas • En./script/ ogenerate (genera codigo) o plugin (incluir codigo de 3ros) oserver (servidor simple) oconsole (consola interactiva) odbconsole (consola base datos) o runner (ejecuta trozos de Ruby)
  • 20.
    Rakefile • Similara make, pero en Ruby • Incluye o stats (estadisticas) o doc (generar documentacion) o test (realizar pruebas) omigrate (migraciones de BD)
  • 21.
  • 22.
    ActiveRecord Database agnostic Capa ORM de Rails Tablas como clases Registros como objetos Columnas como objetos Crecimiento incremental
  • 23.
    Ejemplo ActiveRecord creandola tabla *con sql normal create 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 ruby script/generate model aviso contenido:text categoria_id:integer rake db:migrate class Aviso < ActiveRecord::Base end
  • 24.
    Ejemplo ActiveRecord Todoslos registros de la tabla avisos *con sql normal select * from avisos; *con ActiveRecord @avisos = Aviso.find(:all) , o su abreviatura @avisos = Aviso.all Todos los registros de la categoria 10 *con sql normal select * from avisos where categoria_id = 10; *con ActiveRecord @avisos = Aviso.find_all_by_categoria_id(10) ** metodos mágicos sin siquiera definirlos
  • 25.
    Asociaciones en ActiveRecord class Aviso < ActiveRecord::Base belongs_to :categoria #proviene de categoria end class Categoria < ActiveRecord::Base has_many :avisos #tiene muchos avisos end categUosruiaasrio id avisos id categoria_id
  • 26.
    ActionPack Compuesto porActionController y ActionView Juntos permiten procesar los requerimientos entrantes y generar las respuestas de salida
  • 27.
    ActionController Recibe laspeticiones desde el navegador generalmente de este modo http://sitio/controller/action/id p.e. http://profenelson.cl/posts/show/1 Controlador posts, accion show, id = 1
  • 28.
    ActionController Se puedemodificar las rutas para que tengan mejor aspecto y otro tipo de utilidad Por ejemplo http://sitio/noticias/2009/11/26 http://sitio/login map.login 'login', :controller => 'sessions', :action => 'new' En vez de usar http://sitio/sessions/new
  • 29.
    Muy bien Houdini muéstrame lo que tienes!
  • 30.
    Lo que dicegente 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
  • 31.
    Lo que dicegente 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
  • 32.
    Lo que dicegente inteligente acerca de Rails "Rails es la aplicación de Ruby." Yukihiro Matsumoto, creador de Ruby
  • 33.