Introducción a Ruby on Rails
-
Upload
guest638090 -
Category
Documents
-
view
1.361 -
download
0
description
Transcript of Introducción a Ruby on Rails
![Page 1: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/1.jpg)
CHARLA/TALLER
Introducción a Ruby on Rails
III Jornadas de Informática de la UEM
Raúl Murciano – raul.murciano.net
Borja Martín – dagi3d.net
GLUEM - gluem.net
![Page 2: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/2.jpg)
Qué es Ruby
Lenguaje de script interpretado de código abierto
Desarrollado por Yukihiro Matsumoto('Matz') y liberado en 1995
Puramente orientado a objetos Código abierto
![Page 3: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/3.jpg)
Características de Ruby
TODO es un objeto Tipado dinámico Herencia Altamente portable Recolector automático de basura Sobrecarga de operadores Introspección / Reflexión / Metaprogramación
![Page 4: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/4.jpg)
Todo es un objeto
1.next
5.3.floor
”hola mundo”.upcase
[3, 4, 1, 2].sort
nil.class
# 2
# 5
# ”HOLA MUNDO”
# [1, 2, 3, 4]
# NilClass
![Page 5: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/5.jpg)
Estructuras condicionales
if a == 1 # a = 1elsif a == 2 # a = 2else # cualquier otro valorend
puts ”a = 1” if a == 1
unless correcto
puts "¡incorrecto!"
end
![Page 6: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/6.jpg)
Bucles
for i in 1..10
puts i
end
for letra in ['a', 'b', 'c', 'd']
puts letra
end
while a < 10
a+= 10
end
![Page 7: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/7.jpg)
Arrays
letras = ['a', 'b', 'c', 'd']
letras << 'e'
letras[0]
letras.first
letras.length
# ['a', 'b', 'c', 'd']
# ['a', 'b', 'c', 'd', 'e']
# 'a'
# 'a'
# 5
![Page 8: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/8.jpg)
Símbolos
"foo".object_id
"foo".object_id
:foo.object_id
:foo.object_id
# -605211038
# -605211058
# 105218
# 105218
Objeto más básico en ruby ”Literales de cadenas de texto constantes”
![Page 9: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/9.jpg)
Hashes
colores = {
:rojo => "FF0000",
:verde => "00FF00",
:azul => "0000FF"
}
colores[:rojo] # ”FF0000”
![Page 10: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/10.jpg)
Iteradores y bloques
numeros = [1, 3, 5, 2, 7, 9]
numeros.each do |n|
puts n * 2
end
# 2
# 6
# 10
# 4
# 14
# 18
![Page 11: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/11.jpg)
Métodos
def suma(a, b, c)
a + b + c
end
suma(1, 2, 3) # 6
![Page 12: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/12.jpg)
# clase MiFigura. 100% GPL!class MiFigura MAX_LADOS = 100 @@colores = {:blanco => ”ffffff”,:negro => ”000000”} attr_accessor :color attr_reader :lados def initialize(lados, color) @color, @lados = color, lados end end
Clases
![Page 13: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/13.jpg)
Herencia
class Triangulo < MiFigura def initialize(color) @lados = 3 @color = color end
end
![Page 14: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/14.jpg)
Las clases no se cierran
class Integer
def al_cubo
self ** 3
end
end
4.al_cubo # 64
![Page 15: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/15.jpg)
”Duck typing”
def duplica(obj)
obj * 2
end
puts duplica(5)
puts duplica("hola")
# 10
# ”holahola”
”Si habla como un pato y camina como un pato, entonces es un pato”
![Page 16: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/16.jpg)
Metaprogramación
class Persona
def method_missing(name, *params, &block)
puts "El método '#{name}' no existe"
end
end
persona = Persona.new
persona.metodo_inventado
# Ruby On Rails
Cliente.find_by_nombre(”nombre_cliente”)
![Page 17: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/17.jpg)
Demo
• Comprobar que tenemos todo instalado• Creación del proyecto• Ejemplo básico para ver cómo funciona Rails• Vistas• Controladores• Modelos• Aspectos avanzados: plugins, Ajax, REST...
![Page 18: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/18.jpg)
Paso a producción
• Hay trabajo más allá del desarrollo• Muchas posibilidades. Como todo, depende de
las necesidades del proyecto• webserver + FastCGI + DB• webserver + Mongrel + DB• webserver + mongrel cluster + DB• Con jRuby se abren aún más posibilidades
![Page 19: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/19.jpg)
Entornos de Desarrollo
• Aptana RadRails (incluye plugin para Eclipse)• NetBeans• IDEA• Visual Studio• CodeGear (ex Borland)• Textmate• Old school (vi, emacs...)• ...todos incluyen soporte para Ruby y Rails
![Page 20: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/20.jpg)
Recursos: Libros
![Page 21: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/21.jpg)
Recursos: Libros
![Page 22: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/22.jpg)
Recursos: Libros
![Page 23: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/23.jpg)
Recursos: Referencia
• Info oficial: ruby-lang.org rubyonrails.org
• API: rubybrain.com railsbrain.com
![Page 24: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/24.jpg)
Recursos: vídeos y material extra
San Diego Ruby Users Group: podcast.sdruby.com
![Page 25: Introducción a Ruby on Rails](https://reader034.fdocuments.ec/reader034/viewer/2022042516/5585a9a0d8b42ae22a8b4c68/html5/thumbnails/25.jpg)
Recursos: comunidad
• [ror-es] Lista de Ruby y Rails en castellano• [ruby-talk]• [rubyonrails-talk]• Blogs, blogs, blogs...
rubycorner.com planetrubyonrails.com planetrubyonrails.org
conferenciarails.org