Date post: | 21-Jun-2015 |
Category: |
Documents |
Upload: | guest638090 |
View: | 1,355 times |
Download: | 0 times |
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
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
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
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
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
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
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
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”
Hashes
colores = {
:rojo => "FF0000",
:verde => "00FF00",
:azul => "0000FF"
}
colores[:rojo] # ”FF0000”
Iteradores y bloques
numeros = [1, 3, 5, 2, 7, 9]
numeros.each do |n|
puts n * 2
end
# 2
# 6
# 10
# 4
# 14
# 18
Métodos
def suma(a, b, c)
a + b + c
end
suma(1, 2, 3) # 6
# 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
Herencia
class Triangulo < MiFigura def initialize(color) @lados = 3 @color = color end
end
Las clases no se cierran
class Integer
def al_cubo
self ** 3
end
end
4.al_cubo # 64
”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”
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”)
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...
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
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
Recursos: Libros
Recursos: Libros
Recursos: Libros
Recursos: Referencia
• Info oficial: ruby-lang.org rubyonrails.org
• API: rubybrain.com railsbrain.com
Recursos: vídeos y material extra
San Diego Ruby Users Group: podcast.sdruby.com
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