Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta...

178
Ruby on Rails: la revoluci´ on del desarrollo web Esteban Manchado Vel´ azquez [email protected] 15 de octubre de 2005

Transcript of Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta...

Page 1: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ruby on Rails: la revolucion del desarrollo web

Esteban Manchado [email protected]

15 de octubre de 2005

Page 2: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Indice

1 IntroduccionAntes de nada...Un poco de RubyEstado actual del desarrollo web

2 Ruby on RailsRoR is in tha house!MVCOtras comodidadesConclusion

3 DemoPreparacionEjecucion

Page 3: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Indice

1 IntroduccionAntes de nada...Un poco de RubyEstado actual del desarrollo web

2 Ruby on RailsRoR is in tha house!MVCOtras comodidadesConclusion

3 DemoPreparacionEjecucion

Page 4: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Sobre esta charla

• Presentar Ruby y RoR

• Mostrar como hacer una aplicacion

• Cuidado con los mensajes subliminales

Page 5: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Sobre esta charla

• Presentar Ruby y RoR

• Mostrar como hacer una aplicacion

• Cuidado con los mensajes subliminales

Page 6: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Sobre esta charla

• Presentar Ruby y RoR

• Mostrar como hacer una aplicacion

• Cuidado con los mensajes subliminales

Page 7: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Grupo Rubies

• http://www.ruby.org.es

• Noticias, wiki, lista de correo

• Traducciones, documentacion, ...

• ¡Anımense!

• Tambien, lista de RoR-es, independiente

Page 8: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Indice

1 IntroduccionAntes de nada...Un poco de RubyEstado actual del desarrollo web

2 Ruby on RailsRoR is in tha house!MVCOtras comodidadesConclusion

3 DemoPreparacionEjecucion

Page 9: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¿Que es Ruby?

• Una piedra preciosa

• Un lenguaje de programacion

• Es de proposito general, Rails es solo una de las posibilidadesweb, y aparte hay Ruby/Qt, Ruby/GNOME, etc.

• ((La combinacion ganadora de la elegancia conceptual deSmallTalk, la facilidad de uso y aprendizaje de Python y elpragmatismo de Perl))

• ((Un lenguaje que es como lo mejor de SmallTalk, Perl y Lisp,y sin ruido en la lınea))

Page 10: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¿Que es Ruby?

• Una piedra preciosa

• Un lenguaje de programacion

• Es de proposito general, Rails es solo una de las posibilidadesweb, y aparte hay Ruby/Qt, Ruby/GNOME, etc.

• ((La combinacion ganadora de la elegancia conceptual deSmallTalk, la facilidad de uso y aprendizaje de Python y elpragmatismo de Perl))

• ((Un lenguaje que es como lo mejor de SmallTalk, Perl y Lisp,y sin ruido en la lınea))

Page 11: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¿Que es Ruby?

• Una piedra preciosa

• Un lenguaje de programacion

• Es de proposito general, Rails es solo una de las posibilidadesweb, y aparte hay Ruby/Qt, Ruby/GNOME, etc.

• ((La combinacion ganadora de la elegancia conceptual deSmallTalk, la facilidad de uso y aprendizaje de Python y elpragmatismo de Perl))

• ((Un lenguaje que es como lo mejor de SmallTalk, Perl y Lisp,y sin ruido en la lınea))

Page 12: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¿Que es Ruby?

• Una piedra preciosa

• Un lenguaje de programacion

• Es de proposito general, Rails es solo una de las posibilidadesweb, y aparte hay Ruby/Qt, Ruby/GNOME, etc.

• ((La combinacion ganadora de la elegancia conceptual deSmallTalk, la facilidad de uso y aprendizaje de Python y elpragmatismo de Perl))

• ((Un lenguaje que es como lo mejor de SmallTalk, Perl y Lisp,y sin ruido en la lınea))

Page 13: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¿Que es Ruby?

• Una piedra preciosa

• Un lenguaje de programacion

• Es de proposito general, Rails es solo una de las posibilidadesweb, y aparte hay Ruby/Qt, Ruby/GNOME, etc.

• ((La combinacion ganadora de la elegancia conceptual deSmallTalk, la facilidad de uso y aprendizaje de Python y elpragmatismo de Perl))

• ((Un lenguaje que es como lo mejor de SmallTalk, Perl y Lisp,y sin ruido en la lınea))

Page 14: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

No es amor, sera...

• Orientacion a objetos obsesiva

• Todo es un objeto y tiene metodos

• 1.upto(10) {|i| puts i}"uno dos tres".split(/ */)

• No hay atributos de objetos (desde fuera)

• Basado en lıneas (no son necesarios ; y similares)

• Aspecto limpio, facil de leer

• Aunque tambien ((Ruby golf)), expresiones regulares...

Page 15: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

No es amor, sera...

• Orientacion a objetos obsesiva

• Todo es un objeto y tiene metodos

• 1.upto(10) {|i| puts i}"uno dos tres".split(/ */)

• No hay atributos de objetos (desde fuera)

• Basado en lıneas (no son necesarios ; y similares)

• Aspecto limpio, facil de leer

• Aunque tambien ((Ruby golf)), expresiones regulares...

Page 16: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

No es amor, sera...

• Orientacion a objetos obsesiva

• Todo es un objeto y tiene metodos

• 1.upto(10) {|i| puts i}"uno dos tres".split(/ */)

• No hay atributos de objetos (desde fuera)

• Basado en lıneas (no son necesarios ; y similares)

• Aspecto limpio, facil de leer

• Aunque tambien ((Ruby golf)), expresiones regulares...

Page 17: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

No es amor, sera...

• Orientacion a objetos obsesiva

• Todo es un objeto y tiene metodos

• 1.upto(10) {|i| puts i}"uno dos tres".split(/ */)

• No hay atributos de objetos (desde fuera)

• Basado en lıneas (no son necesarios ; y similares)

• Aspecto limpio, facil de leer

• Aunque tambien ((Ruby golf)), expresiones regulares...

Page 18: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

No es amor, sera...

• Orientacion a objetos obsesiva

• Todo es un objeto y tiene metodos

• 1.upto(10) {|i| puts i}"uno dos tres".split(/ */)

• No hay atributos de objetos (desde fuera)

• Basado en lıneas (no son necesarios ; y similares)

• Aspecto limpio, facil de leer

• Aunque tambien ((Ruby golf)), expresiones regulares...

Page 19: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

No es amor, sera...

• Orientacion a objetos obsesiva

• Todo es un objeto y tiene metodos

• 1.upto(10) {|i| puts i}"uno dos tres".split(/ */)

• No hay atributos de objetos (desde fuera)

• Basado en lıneas (no son necesarios ; y similares)

• Aspecto limpio, facil de leer

• Aunque tambien ((Ruby golf)), expresiones regulares...

Page 20: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

No es amor, sera...

• Orientacion a objetos obsesiva

• Todo es un objeto y tiene metodos

• 1.upto(10) {|i| puts i}"uno dos tres".split(/ */)

• No hay atributos de objetos (desde fuera)

• Basado en lıneas (no son necesarios ; y similares)

• Aspecto limpio, facil de leer

• Aunque tambien ((Ruby golf)), expresiones regulares...

Page 21: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

No es amor, sera...

• Orientacion a objetos obsesiva

• Todo es un objeto y tiene metodos

• 1.upto(10) {|i| puts i}"uno dos tres".split(/ */)

• No hay atributos de objetos (desde fuera)

• Basado en lıneas (no son necesarios ; y similares)

• Aspecto limpio, facil de leer

• Aunque tambien ((Ruby golf)), expresiones regulares...

Page 22: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

class Pokemonattr_reader :evolucionado, :nombredef initialize(nombre)

@nombre = nombre@evolucionado = false

enddef evoluciona

puts "Soy el Pokemon #{@nombre}"@evolucionado = true

endend

Page 23: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

class Pokemonattr_reader :evolucionado, :nombredef initialize(nombre)

@nombre = nombre@evolucionado = false

enddef evoluciona

puts "Soy el Pokemon #{@nombre}"@evolucionado = true

endend

Page 24: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

class Pokemonattr_reader :evolucionado, :nombredef initialize(nombre)

@nombre = nombre@evolucionado = false

enddef evoluciona

puts "Soy el Pokemon #{@nombre}"@evolucionado = true

endend

Page 25: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

class Pokemonattr_reader :evolucionado, :nombredef initialize(nombre)

@nombre = nombre@evolucionado = false

enddef evoluciona

puts "Soy el Pokemon #{@nombre}"@evolucionado = true

endend

Page 26: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

class Pokemonattr_reader :evolucionado, :nombredef initialize(nombre)

@nombre = nombre@evolucionado = false

enddef evoluciona

puts "Soy el Pokemon #{@nombre}"@evolucionado = true

endend

Page 27: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

ruby> pika = Pokemon.new(’Pikachu’)=> #<Pokemon:0x4030d154 @evolucionado=false, ...>ruby> pika.evolucionado=> falseruby> pika.evolucionaSoy el Pokemon Pikachu=> trueruby> pika.evolucionado=> trueruby> pika.class=> Pokemonruby> pika.methods.grep(/evoluciona/)=> ["evoluciona", "evolucionado"]

Page 28: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

ruby> pika = Pokemon.new(’Pikachu’)=> #<Pokemon:0x4030d154 @evolucionado=false, ...>ruby> pika.evolucionado=> falseruby> pika.evolucionaSoy el Pokemon Pikachu=> trueruby> pika.evolucionado=> trueruby> pika.class=> Pokemonruby> pika.methods.grep(/evoluciona/)=> ["evoluciona", "evolucionado"]

Page 29: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

ruby> pika = Pokemon.new(’Pikachu’)=> #<Pokemon:0x4030d154 @evolucionado=false, ...>ruby> pika.evolucionado=> falseruby> pika.evolucionaSoy el Pokemon Pikachu=> trueruby> pika.evolucionado=> trueruby> pika.class=> Pokemonruby> pika.methods.grep(/evoluciona/)=> ["evoluciona", "evolucionado"]

Page 30: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

ruby> pika = Pokemon.new(’Pikachu’)=> #<Pokemon:0x4030d154 @evolucionado=false, ...>ruby> pika.evolucionado=> falseruby> pika.evolucionaSoy el Pokemon Pikachu=> trueruby> pika.evolucionado=> trueruby> pika.class=> Pokemonruby> pika.methods.grep(/evoluciona/)=> ["evoluciona", "evolucionado"]

Page 31: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

ruby> pika = Pokemon.new(’Pikachu’)=> #<Pokemon:0x4030d154 @evolucionado=false, ...>ruby> pika.evolucionado=> falseruby> pika.evolucionaSoy el Pokemon Pikachu=> trueruby> pika.evolucionado=> trueruby> pika.class=> Pokemonruby> pika.methods.grep(/evoluciona/)=> ["evoluciona", "evolucionado"]

Page 32: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

ruby> pika = Pokemon.new(’Pikachu’)=> #<Pokemon:0x4030d154 @evolucionado=false, ...>ruby> pika.evolucionado=> falseruby> pika.evolucionaSoy el Pokemon Pikachu=> trueruby> pika.evolucionado=> trueruby> pika.class=> Pokemonruby> pika.methods.grep(/evoluciona/)=> ["evoluciona", "evolucionado"]

Page 33: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

ruby> pika = Pokemon.new(’Pikachu’)=> #<Pokemon:0x4030d154 @evolucionado=false, ...>ruby> pika.evolucionado=> falseruby> pika.evolucionaSoy el Pokemon Pikachu=> trueruby> pika.evolucionado=> trueruby> pika.class=> Pokemonruby> pika.methods.grep(/evoluciona/)=> ["evoluciona", "evolucionado"]

Page 34: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

ruby> pika = Pokemon.new(’Pikachu’)=> #<Pokemon:0x4030d154 @evolucionado=false, ...>ruby> pika.evolucionado=> falseruby> pika.evolucionaSoy el Pokemon Pikachu=> trueruby> pika.evolucionado=> trueruby> pika.class=> Pokemonruby> pika.methods.grep(/evoluciona/)=> ["evoluciona", "evolucionado"]

Page 35: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

ruby> pika = Pokemon.new(’Pikachu’)=> #<Pokemon:0x4030d154 @evolucionado=false, ...>ruby> pika.evolucionado=> falseruby> pika.evolucionaSoy el Pokemon Pikachu=> trueruby> pika.evolucionado=> trueruby> pika.class=> Pokemonruby> pika.methods.grep(/evoluciona/)=> ["evoluciona", "evolucionado"]

Page 36: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

ruby> pika = Pokemon.new(’Pikachu’)=> #<Pokemon:0x4030d154 @evolucionado=false, ...>ruby> pika.evolucionado=> falseruby> pika.evolucionaSoy el Pokemon Pikachu=> trueruby> pika.evolucionado=> trueruby> pika.class=> Pokemonruby> pika.methods.grep(/evoluciona/)=> ["evoluciona", "evolucionado"]

Page 37: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

ruby> pika = Pokemon.new(’Pikachu’)=> #<Pokemon:0x4030d154 @evolucionado=false, ...>ruby> pika.evolucionado=> falseruby> pika.evolucionaSoy el Pokemon Pikachu=> trueruby> pika.evolucionado=> trueruby> pika.class=> Pokemonruby> pika.methods.grep(/evoluciona/)=> ["evoluciona", "evolucionado"]

Page 38: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

ruby> pika = Pokemon.new(’Pikachu’)=> #<Pokemon:0x4030d154 @evolucionado=false, ...>ruby> pika.evolucionado=> falseruby> pika.evolucionaSoy el Pokemon Pikachu=> trueruby> pika.evolucionado=> trueruby> pika.class=> Pokemonruby> pika.methods.grep(/evoluciona/)=> ["evoluciona", "evolucionado"]

Page 39: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo algo mas ((real))

ruby> pika = Pokemon.new(’Pikachu’)=> #<Pokemon:0x4030d154 @evolucionado=false, ...>ruby> pika.evolucionado=> falseruby> pika.evolucionaSoy el Pokemon Pikachu=> trueruby> pika.evolucionado=> trueruby> pika.class=> Pokemonruby> pika.methods.grep(/evoluciona/)=> ["evoluciona", "evolucionado"]

Page 40: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Bloques/iteradores

• ((Subrutinas anonimas)) como ((parametro))

• P.ej., para recorrer objetos

• [1, 2, 3, 4].each do |i|puts i

end

• "jander klander gronder".split(" ").each do |i|puts i =~/ander$/ ? "#{i} rulz" : "#{i} sobra"

end

• button.connect(PUSH EVENT) do |sender,sel,event|puts "Boton pulsado"

end

Page 41: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Bloques/iteradores

• ((Subrutinas anonimas)) como ((parametro))

• P.ej., para recorrer objetos

• [1, 2, 3, 4].each do |i|puts i

end

• "jander klander gronder".split(" ").each do |i|puts i =~/ander$/ ? "#{i} rulz" : "#{i} sobra"

end

• button.connect(PUSH EVENT) do |sender,sel,event|puts "Boton pulsado"

end

Page 42: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Bloques/iteradores

• ((Subrutinas anonimas)) como ((parametro))

• P.ej., para recorrer objetos

• [1, 2, 3, 4].each do |i|puts i

end

• "jander klander gronder".split(" ").each do |i|puts i =~/ander$/ ? "#{i} rulz" : "#{i} sobra"

end

• button.connect(PUSH EVENT) do |sender,sel,event|puts "Boton pulsado"

end

Page 43: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Bloques/iteradores

• ((Subrutinas anonimas)) como ((parametro))

• P.ej., para recorrer objetos

• [1, 2, 3, 4].each do |i|puts i

end

• "jander klander gronder".split(" ").each do |i|puts i =~/ander$/ ? "#{i} rulz" : "#{i} sobra"

end

• button.connect(PUSH EVENT) do |sender,sel,event|puts "Boton pulsado"

end

Page 44: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Bloques/iteradores

• ((Subrutinas anonimas)) como ((parametro))

• P.ej., para recorrer objetos

• [1, 2, 3, 4].each do |i|puts i

end

• "jander klander gronder".split(" ").each do |i|puts i =~/ander$/ ? "#{i} rulz" : "#{i} sobra"

end

• button.connect(PUSH EVENT) do |sender,sel,event|puts "Boton pulsado"

end

Page 45: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Indice

1 IntroduccionAntes de nada...Un poco de RubyEstado actual del desarrollo web

2 Ruby on RailsRoR is in tha house!MVCOtras comodidadesConclusion

3 DemoPreparacionEjecucion

Page 46: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Desarrollo web tradicional

• Separacion de conceptos

• Duplicacion de codigo

• Por separado, ((maduro)), pero no muy bien integrado

• MVC de moda ultimamente

• No hay casi nada preparado para la Web 2.0

Page 47: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Desarrollo web tradicional

• Separacion de conceptos

• Duplicacion de codigo

• Por separado, ((maduro)), pero no muy bien integrado

• MVC de moda ultimamente

• No hay casi nada preparado para la Web 2.0

Page 48: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Desarrollo web tradicional

• Separacion de conceptos

• Duplicacion de codigo

• Por separado, ((maduro)), pero no muy bien integrado

• MVC de moda ultimamente

• No hay casi nada preparado para la Web 2.0

Page 49: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Desarrollo web tradicional

• Separacion de conceptos

• Duplicacion de codigo

• Por separado, ((maduro)), pero no muy bien integrado

• MVC de moda ultimamente

• No hay casi nada preparado para la Web 2.0

Page 50: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Desarrollo web tradicional

• Separacion de conceptos

• Duplicacion de codigo

• Por separado, ((maduro)), pero no muy bien integrado

• MVC de moda ultimamente

• No hay casi nada preparado para la Web 2.0

Page 51: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Indice

1 IntroduccionAntes de nada...Un poco de RubyEstado actual del desarrollo web

2 Ruby on RailsRoR is in tha house!MVCOtras comodidadesConclusion

3 DemoPreparacionEjecucion

Page 52: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Nacimiento de RoR

• David Heinemeier Hansson (Dinamarca)

• Esta loco

• Programaba en PHP

(me estoy repitiendo)

• Intento escribir Rails en PHP...

• ...pero fracaso miserablemente

• Necesitaba algo mas

• Un amigo le habıa nombrado Ruby y...

Page 53: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Nacimiento de RoR

• David Heinemeier Hansson (Dinamarca)

• Esta loco

• Programaba en PHP

(me estoy repitiendo)

• Intento escribir Rails en PHP...

• ...pero fracaso miserablemente

• Necesitaba algo mas

• Un amigo le habıa nombrado Ruby y...

Page 54: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Nacimiento de RoR

• David Heinemeier Hansson (Dinamarca)

• Esta loco

• Programaba en PHP

(me estoy repitiendo)

• Intento escribir Rails en PHP...

• ...pero fracaso miserablemente

• Necesitaba algo mas

• Un amigo le habıa nombrado Ruby y...

Page 55: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Nacimiento de RoR

• David Heinemeier Hansson (Dinamarca)

• Esta loco

• Programaba en PHP (me estoy repitiendo)

• Intento escribir Rails en PHP...

• ...pero fracaso miserablemente

• Necesitaba algo mas

• Un amigo le habıa nombrado Ruby y...

Page 56: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Nacimiento de RoR

• David Heinemeier Hansson (Dinamarca)

• Esta loco

• Programaba en PHP (me estoy repitiendo)

• Intento escribir Rails en PHP...

• ...pero fracaso miserablemente

• Necesitaba algo mas

• Un amigo le habıa nombrado Ruby y...

Page 57: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Nacimiento de RoR

• David Heinemeier Hansson (Dinamarca)

• Esta loco

• Programaba en PHP (me estoy repitiendo)

• Intento escribir Rails en PHP...

• ...pero fracaso miserablemente

• Necesitaba algo mas

→• Un amigo le habıa nombrado Ruby y...

Page 58: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Nacimiento de RoR

• David Heinemeier Hansson (Dinamarca)

• Esta loco

• Programaba en PHP (me estoy repitiendo)

• Intento escribir Rails en PHP...

• ...pero fracaso miserablemente

• Necesitaba algo mas →

• Un amigo le habıa nombrado Ruby y...

Page 59: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Nacimiento de RoR

• David Heinemeier Hansson (Dinamarca)

• Esta loco

• Programaba en PHP (me estoy repitiendo)

• Intento escribir Rails en PHP...

• ...pero fracaso miserablemente

• Necesitaba algo mas →• Un amigo le habıa nombrado Ruby y...

Page 60: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Los cinco pilares del Islam^WRails

• Productividad maxima

• Sentido estetico

• Herramientas mas o menos buenas...

• ...muy bien integradas (todo > partes)

• Simplicidad, DRY (Don’t Repeat Yourself)

• ¡Abajo la configuracion, arriba las convenciones!

Page 61: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Los cinco pilares del Islam^WRails

• Productividad maxima

• Sentido estetico

• Herramientas mas o menos buenas...

• ...muy bien integradas (todo > partes)

• Simplicidad, DRY (Don’t Repeat Yourself)

• ¡Abajo la configuracion, arriba las convenciones!

Page 62: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Los cinco pilares del Islam^WRails

• Productividad maxima

• Sentido estetico

• Herramientas mas o menos buenas...

• ...muy bien integradas (todo > partes)

• Simplicidad, DRY (Don’t Repeat Yourself)

• ¡Abajo la configuracion, arriba las convenciones!

Page 63: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Los cinco pilares del Islam^WRails

• Productividad maxima

• Sentido estetico

• Herramientas mas o menos buenas...

• ...muy bien integradas (todo > partes)

• Simplicidad, DRY (Don’t Repeat Yourself)

• ¡Abajo la configuracion, arriba las convenciones!

Page 64: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Los cinco pilares del Islam^WRails

• Productividad maxima

• Sentido estetico

• Herramientas mas o menos buenas...

• ...muy bien integradas (todo > partes)

• Simplicidad, DRY (Don’t Repeat Yourself)

• ¡Abajo la configuracion, arriba las convenciones!

Page 65: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Los cinco pilares del Islam^WRails

• Productividad maxima

• Sentido estetico

• Herramientas mas o menos buenas...

• ...muy bien integradas (todo > partes)

• Simplicidad, DRY (Don’t Repeat Yourself)

• ¡Abajo la configuracion, arriba las convenciones!

Page 66: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Indice

1 IntroduccionAntes de nada...Un poco de RubyEstado actual del desarrollo web

2 Ruby on RailsRoR is in tha house!MVCOtras comodidadesConclusion

3 DemoPreparacionEjecucion

Page 67: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Modelo

• Para acceder a los datos

• Modulo: ActiveRecord

• Descubre automaticamente los campos...

• ...y la tabla (Alumno → alumnos)

• Se puede personalizar y anadir metodos

• Se crean con script/generate model alumno

Page 68: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Modelo

• Para acceder a los datos

• Modulo: ActiveRecord

• Descubre automaticamente los campos...

• ...y la tabla (Alumno → alumnos)

• Se puede personalizar y anadir metodos

• Se crean con script/generate model alumno

Page 69: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Modelo

• Para acceder a los datos

• Modulo: ActiveRecord

• Descubre automaticamente los campos...

• ...y la tabla (Alumno → alumnos)

• Se puede personalizar y anadir metodos

• Se crean con script/generate model alumno

Page 70: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Modelo

• Para acceder a los datos

• Modulo: ActiveRecord

• Descubre automaticamente los campos...

• ...y la tabla (Alumno → alumnos)

• Se puede personalizar y anadir metodos

• Se crean con script/generate model alumno

Page 71: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Modelo

• Para acceder a los datos

• Modulo: ActiveRecord

• Descubre automaticamente los campos...

• ...y la tabla (Alumno → alumnos)

• Se puede personalizar y anadir metodos

• Se crean con script/generate model alumno

Page 72: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Modelo

• Para acceder a los datos

• Modulo: ActiveRecord

• Descubre automaticamente los campos...

• ...y la tabla (Alumno → alumnos)

• Se puede personalizar y anadir metodos

• Se crean con script/generate model alumno

Page 73: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo de modelo

class Alumno < ActiveRecord::Basehas_many :cursosdef es_socio

not num_socio.nil?end

end

Page 74: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo de modelo

class Alumno < ActiveRecord::Basehas_many :cursosdef es_socio

not num_socio.nil?end

end

Definicion base

Page 75: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo de modelo

class Alumno < ActiveRecord::Basehas_many :cursosdef es_socio

not num_socio.nil?end

end

Declaracion de relacion

Page 76: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo de modelo

class Alumno < ActiveRecord::Basehas_many :cursosdef es_socio

not num_socio.nil?end

end

Nuevo metodo

Page 77: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Vista

• Para decidir el aspecto

• Modulo: Embedded Ruby, erb

• Ruby embebido en HTML

• Simple, potente

• HTML repetitivo, a funciones externas (helpers)

• Ficheros .rhtml en app/views/controlador

Page 78: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Vista

• Para decidir el aspecto

• Modulo: Embedded Ruby, erb

• Ruby embebido en HTML

• Simple, potente

• HTML repetitivo, a funciones externas (helpers)

• Ficheros .rhtml en app/views/controlador

Page 79: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Vista

• Para decidir el aspecto

• Modulo: Embedded Ruby, erb

• Ruby embebido en HTML

• Simple, potente

• HTML repetitivo, a funciones externas (helpers)

• Ficheros .rhtml en app/views/controlador

Page 80: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Vista

• Para decidir el aspecto

• Modulo: Embedded Ruby, erb

• Ruby embebido en HTML

• Simple, potente

• HTML repetitivo, a funciones externas (helpers)

• Ficheros .rhtml en app/views/controlador

Page 81: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Vista

• Para decidir el aspecto

• Modulo: Embedded Ruby, erb

• Ruby embebido en HTML

• Simple, potente

• HTML repetitivo, a funciones externas (helpers)

• Ficheros .rhtml en app/views/controlador

Page 82: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Vista

• Para decidir el aspecto

• Modulo: Embedded Ruby, erb

• Ruby embebido en HTML

• Simple, potente

• HTML repetitivo, a funciones externas (helpers)

• Ficheros .rhtml en app/views/controlador

Page 83: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo de vista

<h1>A~nadir alumno del curso < %= @curso.titulo %></h1>< % Alumno.find_all(nil, ’nombre’).each do |a| %>

< %= radio_button(’alumno’, ’elegido’, a.id) %>< % end %>

Page 84: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo de vista

<h1>A~nadir alumno del curso < %= @curso.titulo %></h1>< % Alumno.find_all(nil, ’nombre’).each do |a| %>

< %= radio_button(’alumno’, ’elegido’, a.id) %>< % end %>

Imprimir el resultado de la expresion

Page 85: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo de vista

<h1>A~nadir alumno del curso < %= @curso.titulo %></h1>< % Alumno.find_all(nil, ’nombre’).each do |a| %>

< %= radio_button(’alumno’, ’elegido’, a.id) %>< % end %>

Ejecutar codigo Ruby, sin imprimir

Page 86: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo de vista

<h1>A~nadir alumno del curso < %= @curso.titulo %></h1>< % Alumno.find_all(nil, ’nombre’).each do |a| %>

< %= radio_button(’alumno’, ’elegido’, a.id) %>< % end %>

Helpers

Page 87: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Controlador

• Para controlar las acciones

• Modulo: ActionPack

• ((Bisagra)) del MVC

• Clases de Ruby

• Un metodo, una accion

• ((Andamios)) (scaffold) para avanzar mas rapido

• Se crean con script/generate controlleralumno

Page 88: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Controlador

• Para controlar las acciones

• Modulo: ActionPack

• ((Bisagra)) del MVC

• Clases de Ruby

• Un metodo, una accion

• ((Andamios)) (scaffold) para avanzar mas rapido

• Se crean con script/generate controlleralumno

Page 89: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Controlador

• Para controlar las acciones

• Modulo: ActionPack

• ((Bisagra)) del MVC

• Clases de Ruby

• Un metodo, una accion

• ((Andamios)) (scaffold) para avanzar mas rapido

• Se crean con script/generate controlleralumno

Page 90: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Controlador

• Para controlar las acciones

• Modulo: ActionPack

• ((Bisagra)) del MVC

• Clases de Ruby

• Un metodo, una accion

• ((Andamios)) (scaffold) para avanzar mas rapido

• Se crean con script/generate controlleralumno

Page 91: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Controlador

• Para controlar las acciones

• Modulo: ActionPack

• ((Bisagra)) del MVC

• Clases de Ruby

• Un metodo, una accion

• ((Andamios)) (scaffold) para avanzar mas rapido

• Se crean con script/generate controlleralumno

Page 92: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Controlador

• Para controlar las acciones

• Modulo: ActionPack

• ((Bisagra)) del MVC

• Clases de Ruby

• Un metodo, una accion

• ((Andamios)) (scaffold) para avanzar mas rapido

• Se crean con script/generate controlleralumno

Page 93: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Controlador

• Para controlar las acciones

• Modulo: ActionPack

• ((Bisagra)) del MVC

• Clases de Ruby

• Un metodo, una accion

• ((Andamios)) (scaffold) para avanzar mas rapido

• Se crean con script/generate controlleralumno

Page 94: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo de controlador

class CursoController < ApplicationControllerscaffold :cursolayout ’base’def nueva_accion

render_text "Nueva accion"end

end

Page 95: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo de controlador

class CursoController < ApplicationControllerscaffold :cursolayout ’base’def nueva_accion

render_text "Nueva accion"end

end

Definicion base

Page 96: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo de controlador

class CursoController < ApplicationControllerscaffold :cursolayout ’base’def nueva_accion

render_text "Nueva accion"end

end

Crear andamio para el modelo ’curso’

Page 97: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo de controlador

class CursoController < ApplicationControllerscaffold :cursolayout ’base’def nueva_accion

render_text "Nueva accion"end

end

Declarar la plantilla

Page 98: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ejemplo de controlador

class CursoController < ApplicationControllerscaffold :cursolayout ’base’def nueva_accion

render_text "Nueva accion"end

end

Nueva accion

Page 99: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Indice

1 IntroduccionAntes de nada...Un poco de RubyEstado actual del desarrollo web

2 Ruby on RailsRoR is in tha house!MVCOtras comodidadesConclusion

3 DemoPreparacionEjecucion

Page 100: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Utilidades

• Todas en ./script/foo

• generate (genera codigo)

• server (servidor simple para desarrollo)

• console (consola interactiva)

• runner (ejecuta trozos de Ruby)

• breakpointer (engancha con puntos de ruptura)

Page 101: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Utilidades

• Todas en ./script/foo

• generate (genera codigo)

• server (servidor simple para desarrollo)

• console (consola interactiva)

• runner (ejecuta trozos de Ruby)

• breakpointer (engancha con puntos de ruptura)

Page 102: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Utilidades

• Todas en ./script/foo

• generate (genera codigo)

• server (servidor simple para desarrollo)

• console (consola interactiva)

• runner (ejecuta trozos de Ruby)

• breakpointer (engancha con puntos de ruptura)

Page 103: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Utilidades

• Todas en ./script/foo

• generate (genera codigo)

• server (servidor simple para desarrollo)

• console (consola interactiva)

• runner (ejecuta trozos de Ruby)

• breakpointer (engancha con puntos de ruptura)

Page 104: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Utilidades

• Todas en ./script/foo

• generate (genera codigo)

• server (servidor simple para desarrollo)

• console (consola interactiva)

• runner (ejecuta trozos de Ruby)

• breakpointer (engancha con puntos de ruptura)

Page 105: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Utilidades

• Todas en ./script/foo

• generate (genera codigo)

• server (servidor simple para desarrollo)

• console (consola interactiva)

• runner (ejecuta trozos de Ruby)

• breakpointer (engancha con puntos de ruptura)

Page 106: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Rakefile

• Una especie de Makefile...

• ...pero escrito en Ruby

• Viene un Rakefile de serie, con varios objetivos

• stats

• doc

• test

• test recent

• migrate

Page 107: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Rakefile

• Una especie de Makefile...

• ...pero escrito en Ruby

• Viene un Rakefile de serie, con varios objetivos

• stats

• doc

• test

• test recent

• migrate

Page 108: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Rakefile

• Una especie de Makefile...

• ...pero escrito en Ruby

• Viene un Rakefile de serie, con varios objetivos

• stats

• doc

• test

• test recent

• migrate

Page 109: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Rakefile

• Una especie de Makefile...

• ...pero escrito en Ruby

• Viene un Rakefile de serie, con varios objetivos

• stats

• doc

• test

• test recent

• migrate

Page 110: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Rakefile

• Una especie de Makefile...

• ...pero escrito en Ruby

• Viene un Rakefile de serie, con varios objetivos

• stats

• doc

• test

• test recent

• migrate

Page 111: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Rakefile

• Una especie de Makefile...

• ...pero escrito en Ruby

• Viene un Rakefile de serie, con varios objetivos

• stats

• doc

• test

• test recent

• migrate

Page 112: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Rakefile

• Una especie de Makefile...

• ...pero escrito en Ruby

• Viene un Rakefile de serie, con varios objetivos

• stats

• doc

• test

• test recent

• migrate

Page 113: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Rakefile

• Una especie de Makefile...

• ...pero escrito en Ruby

• Viene un Rakefile de serie, con varios objetivos

• stats

• doc

• test

• test recent

• migrate

Page 114: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Indice

1 IntroduccionAntes de nada...Un poco de RubyEstado actual del desarrollo web

2 Ruby on RailsRoR is in tha house!MVCOtras comodidadesConclusion

3 DemoPreparacionEjecucion

Page 115: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Resumen de Rails

• Entorno de desarrollo web

• Escrito en Ruby (aprovechandolo)

• Muy potente y productivo

• Facil de aprender

Page 116: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Resumen de Rails

• Entorno de desarrollo web

• Escrito en Ruby (aprovechandolo)

• Muy potente y productivo

• Facil de aprender

Page 117: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Resumen de Rails

• Entorno de desarrollo web

• Escrito en Ruby (aprovechandolo)

• Muy potente y productivo

• Facil de aprender

Page 118: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Resumen de Rails

• Entorno de desarrollo web

• Escrito en Ruby (aprovechandolo)

• Muy potente y productivo

• Facil de aprender

Page 119: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¿Que nos dejamos atras?

• Componentes

• Servicios web

• Ajax

• Integracion con el correo

• Rutas

• Migraciones

• Configuracion

• Entornos (desarrollo, produccion, ...)

• Baterıas de pruebas

• ...

Page 120: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¿Que nos dejamos atras?

• Componentes

• Servicios web

• Ajax

• Integracion con el correo

• Rutas

• Migraciones

• Configuracion

• Entornos (desarrollo, produccion, ...)

• Baterıas de pruebas

• ...

Page 121: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¿Que nos dejamos atras?

• Componentes

• Servicios web

• Ajax

• Integracion con el correo

• Rutas

• Migraciones

• Configuracion

• Entornos (desarrollo, produccion, ...)

• Baterıas de pruebas

• ...

Page 122: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¿Que nos dejamos atras?

• Componentes

• Servicios web

• Ajax

• Integracion con el correo

• Rutas

• Migraciones

• Configuracion

• Entornos (desarrollo, produccion, ...)

• Baterıas de pruebas

• ...

Page 123: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¿Que nos dejamos atras?

• Componentes

• Servicios web

• Ajax

• Integracion con el correo

• Rutas

• Migraciones

• Configuracion

• Entornos (desarrollo, produccion, ...)

• Baterıas de pruebas

• ...

Page 124: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¿Que nos dejamos atras?

• Componentes

• Servicios web

• Ajax

• Integracion con el correo

• Rutas

• Migraciones

• Configuracion

• Entornos (desarrollo, produccion, ...)

• Baterıas de pruebas

• ...

Page 125: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¿Que nos dejamos atras?

• Componentes

• Servicios web

• Ajax

• Integracion con el correo

• Rutas

• Migraciones

• Configuracion

• Entornos (desarrollo, produccion, ...)

• Baterıas de pruebas

• ...

Page 126: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¿Que nos dejamos atras?

• Componentes

• Servicios web

• Ajax

• Integracion con el correo

• Rutas

• Migraciones

• Configuracion

• Entornos (desarrollo, produccion, ...)

• Baterıas de pruebas

• ...

Page 127: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¿Que nos dejamos atras?

• Componentes

• Servicios web

• Ajax

• Integracion con el correo

• Rutas

• Migraciones

• Configuracion

• Entornos (desarrollo, produccion, ...)

• Baterıas de pruebas

• ...

Page 128: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¿Que nos dejamos atras?

• Componentes

• Servicios web

• Ajax

• Integracion con el correo

• Rutas

• Migraciones

• Configuracion

• Entornos (desarrollo, produccion, ...)

• Baterıas de pruebas

• ...

Page 129: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Enlaces

• http://www.ruby.org.es

• http://www.rubyonrails.com

• http://api.rubyonrails.com

• http://www.ruby-lang.org

• http://www.demiurgo.org

• http://www.foton.es

• http://www.grupocpd.com

Page 130: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Indice

1 IntroduccionAntes de nada...Un poco de RubyEstado actual del desarrollo web

2 Ruby on RailsRoR is in tha house!MVCOtras comodidadesConclusion

3 DemoPreparacionEjecucion

Page 131: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Que vamos a hacer

• Una aplicacion simple de gestion de alumnos

• Hay alumnos, que pueden ser o no socios

• Hay cursos

• Hay reservas de los alumnos en los cursos

• Las reservas pueden estar pagadas o no

Page 132: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Que vamos a hacer

• Una aplicacion simple de gestion de alumnos

• Hay alumnos, que pueden ser o no socios

• Hay cursos

• Hay reservas de los alumnos en los cursos

• Las reservas pueden estar pagadas o no

Page 133: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Que vamos a hacer

• Una aplicacion simple de gestion de alumnos

• Hay alumnos, que pueden ser o no socios

• Hay cursos

• Hay reservas de los alumnos en los cursos

• Las reservas pueden estar pagadas o no

Page 134: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Que vamos a hacer

• Una aplicacion simple de gestion de alumnos

• Hay alumnos, que pueden ser o no socios

• Hay cursos

• Hay reservas de los alumnos en los cursos

• Las reservas pueden estar pagadas o no

Page 135: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Que vamos a hacer

• Una aplicacion simple de gestion de alumnos

• Hay alumnos, que pueden ser o no socios

• Hay cursos

• Hay reservas de los alumnos en los cursos

• Las reservas pueden estar pagadas o no

Page 136: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

La base de datos

• Muy sencilla, un par de tablas

• Convenciones de nombres de Rails

• Tenemos suerte con los nombres (idioma)

• cursos (varios campos de texto)

• alumnos (campos normales y num socio)

• alumnos cursos (relacion n a n con atributos: reservado ypagado)

Page 137: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

La base de datos

• Muy sencilla, un par de tablas

• Convenciones de nombres de Rails

• Tenemos suerte con los nombres (idioma)

• cursos (varios campos de texto)

• alumnos (campos normales y num socio)

• alumnos cursos (relacion n a n con atributos: reservado ypagado)

Page 138: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

La base de datos

• Muy sencilla, un par de tablas

• Convenciones de nombres de Rails

• Tenemos suerte con los nombres (idioma)

• cursos (varios campos de texto)

• alumnos (campos normales y num socio)

• alumnos cursos (relacion n a n con atributos: reservado ypagado)

Page 139: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

La base de datos

• Muy sencilla, un par de tablas

• Convenciones de nombres de Rails

• Tenemos suerte con los nombres (idioma)

• cursos (varios campos de texto)

• alumnos (campos normales y num socio)

• alumnos cursos (relacion n a n con atributos: reservado ypagado)

Page 140: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

La base de datos

• Muy sencilla, un par de tablas

• Convenciones de nombres de Rails

• Tenemos suerte con los nombres (idioma)

• cursos (varios campos de texto)

• alumnos (campos normales y num socio)

• alumnos cursos (relacion n a n con atributos: reservado ypagado)

Page 141: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

La base de datos

• Muy sencilla, un par de tablas

• Convenciones de nombres de Rails

• Tenemos suerte con los nombres (idioma)

• cursos (varios campos de texto)

• alumnos (campos normales y num socio)

• alumnos cursos (relacion n a n con atributos: reservado ypagado)

Page 142: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Indice

1 IntroduccionAntes de nada...Un poco de RubyEstado actual del desarrollo web

2 Ruby on RailsRoR is in tha house!MVCOtras comodidadesConclusion

3 DemoPreparacionEjecucion

Page 143: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(1) Esqueleto inicial

• Crear el esqueleto con rails

• Crear la base de datos

• Volcar la estructura de las tablas

• Configurar la base de datos

• Creamos un controlador foo de prueba

• Comprobamos que todo funciona (./script/server)

Page 144: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(1) Esqueleto inicial

• Crear el esqueleto con rails

• Crear la base de datos

• Volcar la estructura de las tablas

• Configurar la base de datos

• Creamos un controlador foo de prueba

• Comprobamos que todo funciona (./script/server)

Page 145: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(1) Esqueleto inicial

• Crear el esqueleto con rails

• Crear la base de datos

• Volcar la estructura de las tablas

• Configurar la base de datos

• Creamos un controlador foo de prueba

• Comprobamos que todo funciona (./script/server)

Page 146: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(1) Esqueleto inicial

• Crear el esqueleto con rails

• Crear la base de datos

• Volcar la estructura de las tablas

• Configurar la base de datos

• Creamos un controlador foo de prueba

• Comprobamos que todo funciona (./script/server)

Page 147: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(1) Esqueleto inicial

• Crear el esqueleto con rails

• Crear la base de datos

• Volcar la estructura de las tablas

• Configurar la base de datos

• Creamos un controlador foo de prueba

• Comprobamos que todo funciona (./script/server)

Page 148: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(1) Esqueleto inicial

• Crear el esqueleto con rails

• Crear la base de datos

• Volcar la estructura de las tablas

• Configurar la base de datos

• Creamos un controlador foo de prueba

• Comprobamos que todo funciona (./script/server)

Page 149: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(2) Crear los modelos

• Creamos un modelo de prueba (Alumno)

• Jugamos con el, con console

• Vemos la base de datos

• Creamos los ((andamios)) de Alumno y Curso

• Establecemos el controlador predeterminado

• Probamos un poco, arreglamos los mensajes Flash

• Declaramos las dependencias has and belongs to many yvalidamos el aforo

• Calculamos automaticamente fecha alta en Alumno

Page 150: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(2) Crear los modelos

• Creamos un modelo de prueba (Alumno)

• Jugamos con el, con console

• Vemos la base de datos

• Creamos los ((andamios)) de Alumno y Curso

• Establecemos el controlador predeterminado

• Probamos un poco, arreglamos los mensajes Flash

• Declaramos las dependencias has and belongs to many yvalidamos el aforo

• Calculamos automaticamente fecha alta en Alumno

Page 151: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(2) Crear los modelos

• Creamos un modelo de prueba (Alumno)

• Jugamos con el, con console

• Vemos la base de datos

• Creamos los ((andamios)) de Alumno y Curso

• Establecemos el controlador predeterminado

• Probamos un poco, arreglamos los mensajes Flash

• Declaramos las dependencias has and belongs to many yvalidamos el aforo

• Calculamos automaticamente fecha alta en Alumno

Page 152: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(2) Crear los modelos

• Creamos un modelo de prueba (Alumno)

• Jugamos con el, con console

• Vemos la base de datos

• Creamos los ((andamios)) de Alumno y Curso

• Establecemos el controlador predeterminado

• Probamos un poco, arreglamos los mensajes Flash

• Declaramos las dependencias has and belongs to many yvalidamos el aforo

• Calculamos automaticamente fecha alta en Alumno

Page 153: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(2) Crear los modelos

• Creamos un modelo de prueba (Alumno)

• Jugamos con el, con console

• Vemos la base de datos

• Creamos los ((andamios)) de Alumno y Curso

• Establecemos el controlador predeterminado

• Probamos un poco, arreglamos los mensajes Flash

• Declaramos las dependencias has and belongs to many yvalidamos el aforo

• Calculamos automaticamente fecha alta en Alumno

Page 154: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(2) Crear los modelos

• Creamos un modelo de prueba (Alumno)

• Jugamos con el, con console

• Vemos la base de datos

• Creamos los ((andamios)) de Alumno y Curso

• Establecemos el controlador predeterminado

• Probamos un poco, arreglamos los mensajes Flash

• Declaramos las dependencias has and belongs to many yvalidamos el aforo

• Calculamos automaticamente fecha alta en Alumno

Page 155: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(2) Crear los modelos

• Creamos un modelo de prueba (Alumno)

• Jugamos con el, con console

• Vemos la base de datos

• Creamos los ((andamios)) de Alumno y Curso

• Establecemos el controlador predeterminado

• Probamos un poco, arreglamos los mensajes Flash

• Declaramos las dependencias has and belongs to many yvalidamos el aforo

• Calculamos automaticamente fecha alta en Alumno

Page 156: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(2) Crear los modelos

• Creamos un modelo de prueba (Alumno)

• Jugamos con el, con console

• Vemos la base de datos

• Creamos los ((andamios)) de Alumno y Curso

• Establecemos el controlador predeterminado

• Probamos un poco, arreglamos los mensajes Flash

• Declaramos las dependencias has and belongs to many yvalidamos el aforo

• Calculamos automaticamente fecha alta en Alumno

Page 157: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(3) Aspecto de los cursos

• En los cursos solo mostramos tıtulo, fechas, precio y aforo

• Condensamos en una las columnas de acciones, quitamos((Destroy))

• Usamos plantillas ((parciales))

• Arreglamos las fechas (helper)

• Integramos la creacion de cursos

• Enlazamos con la gestion de alumnos

• Anadimos vistosidad al mensaje del Flash

Page 158: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(3) Aspecto de los cursos

• En los cursos solo mostramos tıtulo, fechas, precio y aforo

• Condensamos en una las columnas de acciones, quitamos((Destroy))

• Usamos plantillas ((parciales))

• Arreglamos las fechas (helper)

• Integramos la creacion de cursos

• Enlazamos con la gestion de alumnos

• Anadimos vistosidad al mensaje del Flash

Page 159: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(3) Aspecto de los cursos

• En los cursos solo mostramos tıtulo, fechas, precio y aforo

• Condensamos en una las columnas de acciones, quitamos((Destroy))

• Usamos plantillas ((parciales))

• Arreglamos las fechas (helper)

• Integramos la creacion de cursos

• Enlazamos con la gestion de alumnos

• Anadimos vistosidad al mensaje del Flash

Page 160: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(3) Aspecto de los cursos

• En los cursos solo mostramos tıtulo, fechas, precio y aforo

• Condensamos en una las columnas de acciones, quitamos((Destroy))

• Usamos plantillas ((parciales))

• Arreglamos las fechas (helper)

• Integramos la creacion de cursos

• Enlazamos con la gestion de alumnos

• Anadimos vistosidad al mensaje del Flash

Page 161: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(3) Aspecto de los cursos

• En los cursos solo mostramos tıtulo, fechas, precio y aforo

• Condensamos en una las columnas de acciones, quitamos((Destroy))

• Usamos plantillas ((parciales))

• Arreglamos las fechas (helper)

• Integramos la creacion de cursos

• Enlazamos con la gestion de alumnos

• Anadimos vistosidad al mensaje del Flash

Page 162: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(3) Aspecto de los cursos

• En los cursos solo mostramos tıtulo, fechas, precio y aforo

• Condensamos en una las columnas de acciones, quitamos((Destroy))

• Usamos plantillas ((parciales))

• Arreglamos las fechas (helper)

• Integramos la creacion de cursos

• Enlazamos con la gestion de alumnos

• Anadimos vistosidad al mensaje del Flash

Page 163: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(3) Aspecto de los cursos

• En los cursos solo mostramos tıtulo, fechas, precio y aforo

• Condensamos en una las columnas de acciones, quitamos((Destroy))

• Usamos plantillas ((parciales))

• Arreglamos las fechas (helper)

• Integramos la creacion de cursos

• Enlazamos con la gestion de alumnos

• Anadimos vistosidad al mensaje del Flash

Page 164: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(4) Aspecto de los alumnos

• En los alumnos solo mostramos nombre, NIF, fecha alta y no

socio

• Condensamos en una las columnas de acciones, quitamos((Destroy))

• Arreglamos la fecha (helper)

• Arreglamos el no de socio (N/A)

• Integramos la creacion de alumnos

• Enlazamos con la gestion de cursos

• Ordenamos bien, por nombre

• De paso, arreglamos la creacion (rellenar fecha alta ynum socio)

Page 165: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(4) Aspecto de los alumnos

• En los alumnos solo mostramos nombre, NIF, fecha alta y no

socio

• Condensamos en una las columnas de acciones, quitamos((Destroy))

• Arreglamos la fecha (helper)

• Arreglamos el no de socio (N/A)

• Integramos la creacion de alumnos

• Enlazamos con la gestion de cursos

• Ordenamos bien, por nombre

• De paso, arreglamos la creacion (rellenar fecha alta ynum socio)

Page 166: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(4) Aspecto de los alumnos

• En los alumnos solo mostramos nombre, NIF, fecha alta y no

socio

• Condensamos en una las columnas de acciones, quitamos((Destroy))

• Arreglamos la fecha (helper)

• Arreglamos el no de socio (N/A)

• Integramos la creacion de alumnos

• Enlazamos con la gestion de cursos

• Ordenamos bien, por nombre

• De paso, arreglamos la creacion (rellenar fecha alta ynum socio)

Page 167: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(4) Aspecto de los alumnos

• En los alumnos solo mostramos nombre, NIF, fecha alta y no

socio

• Condensamos en una las columnas de acciones, quitamos((Destroy))

• Arreglamos la fecha (helper)

• Arreglamos el no de socio (N/A)

• Integramos la creacion de alumnos

• Enlazamos con la gestion de cursos

• Ordenamos bien, por nombre

• De paso, arreglamos la creacion (rellenar fecha alta ynum socio)

Page 168: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(4) Aspecto de los alumnos

• En los alumnos solo mostramos nombre, NIF, fecha alta y no

socio

• Condensamos en una las columnas de acciones, quitamos((Destroy))

• Arreglamos la fecha (helper)

• Arreglamos el no de socio (N/A)

• Integramos la creacion de alumnos

• Enlazamos con la gestion de cursos

• Ordenamos bien, por nombre

• De paso, arreglamos la creacion (rellenar fecha alta ynum socio)

Page 169: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(4) Aspecto de los alumnos

• En los alumnos solo mostramos nombre, NIF, fecha alta y no

socio

• Condensamos en una las columnas de acciones, quitamos((Destroy))

• Arreglamos la fecha (helper)

• Arreglamos el no de socio (N/A)

• Integramos la creacion de alumnos

• Enlazamos con la gestion de cursos

• Ordenamos bien, por nombre

• De paso, arreglamos la creacion (rellenar fecha alta ynum socio)

Page 170: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(4) Aspecto de los alumnos

• En los alumnos solo mostramos nombre, NIF, fecha alta y no

socio

• Condensamos en una las columnas de acciones, quitamos((Destroy))

• Arreglamos la fecha (helper)

• Arreglamos el no de socio (N/A)

• Integramos la creacion de alumnos

• Enlazamos con la gestion de cursos

• Ordenamos bien, por nombre

• De paso, arreglamos la creacion (rellenar fecha alta ynum socio)

Page 171: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(4) Aspecto de los alumnos

• En los alumnos solo mostramos nombre, NIF, fecha alta y no

socio

• Condensamos en una las columnas de acciones, quitamos((Destroy))

• Arreglamos la fecha (helper)

• Arreglamos el no de socio (N/A)

• Integramos la creacion de alumnos

• Enlazamos con la gestion de cursos

• Ordenamos bien, por nombre

• De paso, arreglamos la creacion (rellenar fecha alta ynum socio)

Page 172: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(5) Asociacion alumnos-cursos

• Crear accion nuevo alumno en el controlador de cursos

• Crear accion alta alumno

• Mostrar mejor el aforo (disponible/total)

• Modificar la lista de cursos para anadir la nueva accion

• Modificar la vista de los cursos, para mostrar los alumnos

Page 173: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(5) Asociacion alumnos-cursos

• Crear accion nuevo alumno en el controlador de cursos

• Crear accion alta alumno

• Mostrar mejor el aforo (disponible/total)

• Modificar la lista de cursos para anadir la nueva accion

• Modificar la vista de los cursos, para mostrar los alumnos

Page 174: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(5) Asociacion alumnos-cursos

• Crear accion nuevo alumno en el controlador de cursos

• Crear accion alta alumno

• Mostrar mejor el aforo (disponible/total)

• Modificar la lista de cursos para anadir la nueva accion

• Modificar la vista de los cursos, para mostrar los alumnos

Page 175: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(5) Asociacion alumnos-cursos

• Crear accion nuevo alumno en el controlador de cursos

• Crear accion alta alumno

• Mostrar mejor el aforo (disponible/total)

• Modificar la lista de cursos para anadir la nueva accion

• Modificar la vista de los cursos, para mostrar los alumnos

Page 176: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

(5) Asociacion alumnos-cursos

• Crear accion nuevo alumno en el controlador de cursos

• Crear accion alta alumno

• Mostrar mejor el aforo (disponible/total)

• Modificar la lista de cursos para anadir la nueva accion

• Modificar la vista de los cursos, para mostrar los alumnos

Page 177: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

¡Ya esta!

Page 178: Esteban Manchado Vel´azquez zoso@grupocpd• Cuidado con los mensajes subliminales Sobre esta charla • Presentar Ruby y RoR • Mostrar c´omo hacer una aplicaci´on • Cuidado

Ruby on Rails: la revolucion del desarrollo web

Esteban Manchado [email protected]

15 de octubre de 2005