Introducción a Ruby on Rails
“Web development that doesn’t hurt”

UPC-FIB Curso 2013-2014
ASW grupo 13

Lucía Monte Soto
Javier Ferrer Gonzalez
Índice
●
●
●
●
●
●
●
●
●
●
●

Propósito
Evolución histórica
Características
Funcionamiento interno
Ejemplos
Framework similares
Pros/Contras
Ejemplos de uso
Perspectivas de futuro
Conclusiones
Referencias
Propósito
● Framework desarrollo Web
● Simplificar el desarrollo
● Utilizar Ruby como lenguaje base
Evolución histórica
● Release 0.0~1.0 -> 13/12/05
○ Caching, web services, routing, Ajax, filters, SQLite3

● Release 1.~2.0 -> 07/12/07
○ REST, soporte debug, cambiado exception handler,
mejoras rendimiento.

● Release 2.~3.0 -> 29/09/10
○ Integración con Merb(+APIS)
○ Helpers de JavaScript con controladores para
prototype y jQuery, nueva Action Mailer API.

● Release 4.0 -> 21/06/13
○ Strong parameters, mejora caching(rusian doll
caching)
Características
● Gracias a Ruby
○
○
○
○

Orientación a objetos “total”
Código “bueno, bonito y barato”
Dinámico pero fuertemente tipado
Closures, clases “abiertas”…

● Propias de Rails
○
○
○
○
○
○
○

MVC
ORM ActiveRecord integrado
Convención sobre configuración
DRY (atributos BBDD, getters ActiveRecord…)
Embedded Ruby en plantillas
prototype y script.aculo.us
Unit, function & integration testing
Funcionamiento (estructura)
Funcionamiento (Model)

● Campos deducidos de BBDD
● Validaciones legibles
● Referencialidad entre tablas
Funcionamiento (Controller)

● Asignaciones a plantilla “directas”
● Simple
● Métodos “mágicos” (por modelo)
Funcionamiento (View)

● Embedded Ruby (loops, ifs, etc.)
Frameworks similares
● Sinatra
○
○
○
○
○

2000 lineas de código
MVC
No ORC
Routes and controllers
“Take what you need”

● Rack/Padrino

Puntuación basada en la actividad de Github y
descargas de Rubygem:
Pros/Contras - RoR Vs
Sinatra
● Pros
○ Ofrece muchas funcionalidades.
○ Está bien documentado.

● Contras
○ Demasiadas funcionalidades para las necesidades de
las webs simples.
○ Curva de aprendizaje lenta.
○ Más lento y menos ligero.
Ejemplos de uso
●
●
●
●
●
●
●

Twitter
Github
Shopify
Basecamp
Groupon
Yellow Pages
…
Perspectivas de futuro
● Activo en cuanto a aportaciones en GitHub.
● “Trendy”
Perspectivas de futuro
Conclusiones
● Diversidad de funcionalidades (ampliable via
módulos/Gemas)
● Código expresivo
● Programación rápida y “fácil” gracias a la
convención sobre configuración.
● Válido para proyectos grandes.
● Tendencia a la alza.
Referencias
● Slides introducción:
○
○
○

http://www.slideshare.net/Joopp/ruby-on-rails-presentationpresentation
http://www.slideshare.net/aizatto/ruby-on-rails-48391
http://www.slideshare.net/madrobby/ruby-on-rails-introduction

● Tutoriales interactivos:
○
○

http://tryruby.org/
http://railsforzombies.org/

● Caracteristicas frameworks
○
○
○
○

http://www.rubyfleebie.com/ruby-is-dynamically-and-strongly-typed/
http://www.millwoodonline.co.uk/blog/sinatra-vs-ruby-on-rails
https://www.ruby-toolbox.com/categories/web_app_frameworks#
http://weblog.rubyonrails.org/releases/

Introducción a Ruby on rails