ruby on railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/ruby on rails/rubyonrails... · el plan os...

120
Ruby on Rails Desarrollo web que no duele Sergio Gil

Upload: vanxuyen

Post on 13-Oct-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Ruby on RailsDesarrollo web que no duele

Sergio Gil

Page 2: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

El plan

Page 3: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

El planOs cuento por qué os puede

interesar Ruby on Rails unos 40’

Nos arremangamos para picar código y os enseño cómo se

hacen algunas cosashasta que nos

echen =;-)

Os doy referencias para seguir, y me aplaudís

sólo 5’ más(de verdad)

Page 4: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

El planOs cuento por qué os puede

interesar Ruby on Rails unos 40’

Nos arremangamos para picar código y os enseño cómo se

hacen algunas cosashasta que nos

echen =;-)

Os doy referencias para seguir, y me aplaudís

sólo 5’ más(de verdad)

Page 5: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

El planOs cuento por qué os puede

interesar Ruby on Rails unos 40’

Nos arremangamos para picar código y os enseño cómo se

hacen algunas cosashasta que nos

echen =;-)

Os doy referencias para seguir, y me aplaudís

sólo 5’ más(de verdad)

Page 6: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Ruby

Page 7: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Ruby

Page 8: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

• Creado en Japón en los 90

Ruby

Page 9: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

• Creado en Japón en los 90• Interpretado

Ruby

Page 10: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

• Creado en Japón en los 90• Interpretado• Dinámico

Ruby

Page 11: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

• Creado en Japón en los 90• Interpretado• Dinámico• Orientado a objetos

Ruby

Page 12: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

• Creado en Japón en los 90• Interpretado• Dinámico• Orientado a objetos• Mola =;-)

Ruby

Page 13: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

5.timesdoputs'¡Fácil!'end

Page 14: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

5.timesdoputs'¡Fácil!'end

• Cercano a nuestra forma de pensar

Page 15: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

5.timesdoputs'¡Fácil!'end

• Cercano a nuestra forma de pensar• Lo cual da una experiencia mejor

Page 16: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

5.timesdoputs'¡Fácil!'end

• Cercano a nuestra forma de pensar• Lo cual da una experiencia mejor• Te hace sentir inteligente

Page 17: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

5.timesdoputs'¡Fácil!'end

• Cercano a nuestra forma de pensar• Lo cual da una experiencia mejor• Te hace sentir inteligente• ¡Es divertido!

Page 18: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Rails

Page 19: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Ruby on Rails

Page 20: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

• Framework de desarrollo web

Ruby on Rails

Page 21: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

• Framework de desarrollo web• Creado por David Heinemeier Hanson

(37signals)

Ruby on Rails

Page 22: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

• Framework de desarrollo web• Creado por David Heinemeier Hanson

(37signals)• Extraído de su aplicación Basecamp

Ruby on Rails

Page 23: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

• Framework de desarrollo web• Creado por David Heinemeier Hanson

(37signals)• Extraído de su aplicación Basecamp• Liberado en 2005

Ruby on Rails

Page 24: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Colección de patrones resueltos

¿Cuántas veces has hecho...

Page 25: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Colección de patrones resueltos

¿Cuántas veces has hecho...

Page 26: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Colección de patrones resueltos

¿Cuántas veces has hecho...

Page 27: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Colección de patrones resueltos

¿Cuántas veces has hecho...

Page 28: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Colección de patrones resueltos

¿Cuántas veces has hecho...

Page 29: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Colección de patrones resueltos

¿Cuántas veces has hecho...

Page 30: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Framework “con opinión”

Hacer fácil lo correcto...

...y difícil lo incorrecto

“si es feo, probablemente está mal”

Page 31: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para
Page 32: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para
Page 33: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para
Page 34: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para
Page 35: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para
Page 36: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para
Page 37: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para
Page 38: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

La Comunidad

Page 39: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

ModeloVista

Controlador

MVC

Page 40: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para
Page 41: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Convention Over Configuration

Page 42: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Convención: norma sin efecto real directo, salvo el beneficio que se obtiene de que todos

los agentes la sigan

Page 43: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para
Page 44: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

classUser<ActiveRecord::Base

has_many:articles,:class_name=>"Article"end

classArticle<ActiveRecord::Base

belongs_to:user,:class_name=>"User"end

classUser<ActiveRecord::Baseset_table_name"users"

has_many:articles,:class_name=>"Article",:foreign_key=>"user_id"end

classArticle<ActiveRecord::Baseset_table_name"articles"

belongs_to:user,:class_name=>"User",:foreign_key=>"user_id"end

classUser<ActiveRecord::Baseset_table_name"users"set_primary_key"id"has_many:articles,:class_name=>"Article",:foreign_key=>"user_id"end

classArticle<ActiveRecord::Baseset_table_name"articles"set_primary_key"id"belongs_to:user,:class_name=>"User",:foreign_key=>"user_id"end

classUser<ActiveRecord::Base

has_many:articles,:class_name=>"Article",:foreign_key=>"user_id"end

classArticle<ActiveRecord::Base

belongs_to:user,:class_name=>"User",:foreign_key=>"user_id"end

classUser<ActiveRecord::Base

has_many:articlesend

classArticle<ActiveRecord::Base

belongs_to:userend

Page 45: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

classUser<ActiveRecord::Base

has_many:articles,:class_name=>"Article"end

classArticle<ActiveRecord::Base

belongs_to:user,:class_name=>"User"end

classUser<ActiveRecord::Baseset_table_name"users"

has_many:articles,:class_name=>"Article",:foreign_key=>"user_id"end

classArticle<ActiveRecord::Baseset_table_name"articles"

belongs_to:user,:class_name=>"User",:foreign_key=>"user_id"end

classUser<ActiveRecord::Base

has_many:articles,:class_name=>"Article",:foreign_key=>"user_id"end

classArticle<ActiveRecord::Base

belongs_to:user,:class_name=>"User",:foreign_key=>"user_id"end

classUser<ActiveRecord::Base

has_many:articlesend

classArticle<ActiveRecord::Base

belongs_to:userend

Page 46: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

classUser<ActiveRecord::Base

has_many:articles,:class_name=>"Article"end

classArticle<ActiveRecord::Base

belongs_to:user,:class_name=>"User"end

classUser<ActiveRecord::Base

has_many:articles,:class_name=>"Article",:foreign_key=>"user_id"end

classArticle<ActiveRecord::Base

belongs_to:user,:class_name=>"User",:foreign_key=>"user_id"end

classUser<ActiveRecord::Base

has_many:articlesend

classArticle<ActiveRecord::Base

belongs_to:userend

Page 47: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

classUser<ActiveRecord::Base

has_many:articles,:class_name=>"Article"end

classArticle<ActiveRecord::Base

belongs_to:user,:class_name=>"User"end

classUser<ActiveRecord::Base

has_many:articlesend

classArticle<ActiveRecord::Base

belongs_to:userend

Page 48: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

classUser<ActiveRecord::Base

has_many:articlesend

classArticle<ActiveRecord::Base

belongs_to:userend

Page 49: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

classUser<ActiveRecord::Base

has_many:articlesend

classArticle<ActiveRecord::Base

belongs_to:userend

classUser<ActiveRecord::Basehas_many:articlesend

classArticle<ActiveRecord::Basebelongs_to:userend

Page 50: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

classUser<ActiveRecord::Basehas_many:articlesend

classArticle<ActiveRecord::Basebelongs_to:userend

Page 51: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Don’t Repeat Yourself

Page 52: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

ActionController::Routing::Routes.drawdo|map|map.article':year/:title',:controller=>'articles',:action=>'show'map.connect':controller/:action/:id'end

link_to(article.title,article_url(:year=>article.date.year,:title=>article.title))

config/routes.rb

app/views/articles/index.rhtml

<ahref="/2007/rails">rails</a>

Page 53: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Y además

Page 54: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para
Page 55: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Testing integrado

Page 56: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Testing integradoPlugins

Page 57: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Testing integradoPlugins

Migraciones

Page 58: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Testing integradoPlugins

MigracionesORM avanzado

Page 59: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Testing integradoPlugins

MigracionesORM avanzado

REST

Page 60: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Testing integradoPlugins

MigracionesORM avanzado

RESTAJAX

Page 61: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Testing integradoPlugins

MigracionesORM avanzado

RESTAJAX

Capistrano

Page 62: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

¡A trabajar!

Page 63: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

$railsmyapp

Page 64: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Entorno de desarrollo integrado

Page 65: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Entorno de desarrollo integrado

• Estructura de directorios predeterminada

Page 66: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Entorno de desarrollo integrado

• Estructura de directorios predeterminada

• Generadores

Page 67: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Entorno de desarrollo integrado

• Estructura de directorios predeterminada

• Generadores

• Entornos de desarrollo, testing y producción

Page 68: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Entorno de desarrollo integrado

• Estructura de directorios predeterminada

• Generadores

• Entornos de desarrollo, testing y producción

• ¡He dicho testing!

Page 69: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Entorno de desarrollo integrado

• Estructura de directorios predeterminada

• Generadores

• Entornos de desarrollo, testing y producción

• ¡He dicho testing!

• Logs

Page 70: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Entorno de desarrollo integrado

• Estructura de directorios predeterminada

• Generadores

• Entornos de desarrollo, testing y producción

• ¡He dicho testing!

• Logs

• $script/console

Page 71: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Entorno de desarrollo integrado

• Estructura de directorios predeterminada

• Generadores

• Entornos de desarrollo, testing y producción

• ¡He dicho testing!

• Logs

• $script/console

• $script/server

Page 72: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Entorno de desarrollo integrado

• Estructura de directorios predeterminada

• Generadores

• Entornos de desarrollo, testing y producción

• ¡He dicho testing!

• Logs

• $script/console

• $script/server

• Rakefile

Page 73: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

ActiveRecord

Page 74: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

ActiveRecord• Capa de modelo (acceso a base de

datos)

Page 75: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

ActiveRecord• Capa de modelo (acceso a base de

datos)

• ORM (Object Relational Mapping)

Page 76: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

ActiveRecord• Capa de modelo (acceso a base de

datos)

• ORM (Object Relational Mapping)

• Tabla = Clase

Page 77: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

ActiveRecord• Capa de modelo (acceso a base de

datos)

• ORM (Object Relational Mapping)

• Tabla = Clase

• Fila = Instancia

Page 78: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

ActiveRecord• Capa de modelo (acceso a base de

datos)

• ORM (Object Relational Mapping)

• Tabla = Clase

• Fila = Instancia

• Columna = Atributo/Método

Page 79: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

ActiveRecord• Capa de modelo (acceso a base de

datos)

• ORM (Object Relational Mapping)

• Tabla = Clase

• Fila = Instancia

• Columna = Atributo/Método

• A tope con las convenciones

Page 80: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

ActiveRecord• Capa de modelo (acceso a base de

datos)

• ORM (Object Relational Mapping)

• Tabla = Clase

• Fila = Instancia

• Columna = Atributo/Método

• A tope con las convenciones

Page 81: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Más features de ActiveRecord

Page 82: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Más features de ActiveRecord

• Migraciones

Page 83: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Más features de ActiveRecord

• Migraciones

• Relaciones simples y complejas

Page 84: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Más features de ActiveRecord

• Migraciones

• Relaciones simples y complejas

• Validaciones

Page 85: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Más features de ActiveRecord

• Migraciones

• Relaciones simples y complejas

• Validaciones

• Callbacks

Page 86: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Más features de ActiveRecord

• Migraciones

• Relaciones simples y complejas

• Validaciones

• Callbacks

• acts_as_list,acts_as_tree,acts_as_*

Page 87: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

class Person < ActiveRecord::Base has_many :articles validates_presence_of :name, :message => "es un campo obligatorio" before_save :log private def log logger.info "Guardada una persona llamada #{self.name}" endend

Page 88: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

MVC en Rails

Ciclo de una petición

Page 89: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

config/routes.rb

ActionController::Routing::Routes.draw do |map| map.connect "blog", :controller => "posts", :action => "index" map.connect "", :controller => "site", :action => "home" map.connect "blog/:year/:month/:day/:title", :controller => "posts", :action => "show" # default route -> map.connect ':controller/:action/:id'end

Page 90: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Controladores

• 1 Controlador = 1 Clase que herede de ApplicationController

• 1 Acción = 1 método público

• Filtros

Page 91: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

class ExampleController < ApplicationController before_filter :greeting before_filter :random_access, :only => :show def list @people = Person.find(:all) end def show @person = Person.find(params[:id]) end private def greeting @greeting = "Hello" end def random_access rand > 0.5 end end

Page 92: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Vistas

Page 93: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Vistas

• Nombre y ubicación por convención

Page 94: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Vistas

• Nombre y ubicación por convenciónapp/views/<controlador>/<acción>.<formato>.<motor>

Page 95: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Vistas

• Nombre y ubicación por convenciónapp/views/<controlador>/<acción>.<formato>.<motor>

• Erb: HTML con Ruby incrustado

Page 96: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Vistas

• Nombre y ubicación por convenciónapp/views/<controlador>/<acción>.<formato>.<motor>

• Erb: HTML con Ruby incrustado<h1><%= @post.title %></h1>

Page 97: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Vistas

• Nombre y ubicación por convenciónapp/views/<controlador>/<acción>.<formato>.<motor>

• Erb: HTML con Ruby incrustado<h1><%= @post.title %></h1>

• Layouts

Page 98: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Vistas

• Nombre y ubicación por convenciónapp/views/<controlador>/<acción>.<formato>.<motor>

• Erb: HTML con Ruby incrustado<h1><%= @post.title %></h1>

• Layouts

• Helpers

Page 99: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

app/views/layouts/application.html.erb

<html> <head> <title>Aplicación de ejemplo</title> </head> <body> <%= yield %> </body></html>

Page 100: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

app/views/example/list.html.erb

<ul> <% for person in @people %> <li><%= link_to person.name, :action => 'show', :id => person.id %></li> <% end %></ul>

Page 101: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Helpers

Page 102: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Helpers

• Generación de rutas

Page 103: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Helpers

• Generación de rutas

• Formularios

Page 104: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Helpers

• Generación de rutas

• Formularios

• Formateo de datos

Page 105: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Helpers

• Generación de rutas

• Formularios

• Formateo de datos

• Paginación

Page 106: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Helpers

• Generación de rutas

• Formularios

• Formateo de datos

• Paginación

• ...

Page 107: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Testing integradoPlugins

MigracionesORM avanzado

RESTAJAX

Capistrano

Page 108: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

¡Me apunto!

Page 109: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

http://www.rubyonrails.org/

Page 110: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Lista de correo en español

http://lists.simplelogica.net/mailman/listinfo/ror‐es

Page 111: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para
Page 112: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para
Page 113: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Entonces, ¿Rails es la solución a todos

los problemas?

Page 114: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

NO

Page 115: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

NOPero sí una herramienta útil

para muchos; tenla en tu arsenal y úsala cuando

corresponda

Page 116: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

¿Y escala?

Page 117: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Sí.

Page 118: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

¿Preguntas?

Page 120: Ruby on Railsftp.gul.uc3m.es/pub/gul/cursos/2008/marzo/Ruby On Rails/rubyonrails... · El plan Os cuento por qué os puede interesar Ruby on Rails unos 40’ Nos arremangamos para

Créditos fotográficosLars Kristian Flem (http://www.flickr.com/photos/larskflem/46551303/) (CC)Michel Kuik (http://www.flickr.com/photos/michelkuik/161160973/) (CC)Ale Muñoz (http://www.sofanaranja.com/)Brillantine Sánchez (http://www.flickr.com/photos/brilliantly/534331230)Robert Parviainen (http://flickr.com/photos/rtv/290062998/) (CC)Sean Dwyer (http://www.flickr.com/photos/dwired/1414217985/) (CC)