SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
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                #2
5.3.floor             #5
”hola mundo”.upcase   # ”HOLA MUNDO”
[3, 4, 1, 2].sort     # [1, 2, 3, 4]
nil.class             # NilClass
Estructuras condicionales

if a == 1                  puts ”a = 1” if a == 1
  #a=1
elsif a == 2
                           unless correcto
  #a=2
else                        puts "¡incorrecto!"
  # cualquier otro valor   end
end
Bucles

for i in 1..10                      while a < 10
 puts i                              a+= 10
end                                 end

for letra in ['a', 'b', 'c', 'd']
 puts letra
end
Arrays

letras = ['a', 'b', 'c', 'd']   # ['a', 'b', 'c', 'd']
letras << 'e'                   # ['a', 'b', 'c', 'd', 'e']
letras[0]                       # 'a'
letras.first                    # 'a'
letras.length                   #5
Símbolos
 Objeto más básico en ruby
 ”Literales de cadenas de texto constantes”




"foo".object_id             # -605211038
"foo".object_id             # -605211058
:foo.object_id              # 105218
:foo.object_id              # 105218
Hashes

colores = {
    :rojo => "FF0000",
    :verde => "00FF00",
    :azul => "0000FF"
}


colores[:rojo]            # ”FF0000”
Iteradores y bloques

numeros = [1, 3, 5, 2, 7, 9]   #2
numeros.each do |n|            #6
 puts n * 2                    # 10
end                            #4
                               # 14
                               # 18
Métodos

def suma(a, b, c)
 a+b+c
end


suma(1, 2, 3)       #6
Clases

# 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
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”
   ”Si habla como un pato y camina como un pato, entonces es un pato”




def duplica(obj)
    obj * 2
end


puts duplica(5)                             # 10
puts duplica("hola")                        # ”holahola”
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

Más contenido relacionado

La actualidad más candente

La actualidad más candente (18)

Semana 6 Módulos en Python Entrega 2
Semana 6   Módulos en Python Entrega 2Semana 6   Módulos en Python Entrega 2
Semana 6 Módulos en Python Entrega 2
 
IntroduccióN A Visual C
IntroduccióN A Visual CIntroduccióN A Visual C
IntroduccióN A Visual C
 
Semana 1 Estructuras de Control en Java
Semana 1   Estructuras de Control en JavaSemana 1   Estructuras de Control en Java
Semana 1 Estructuras de Control en Java
 
Introducción a Javascript
Introducción a JavascriptIntroducción a Javascript
Introducción a Javascript
 
Comandos
ComandosComandos
Comandos
 
Cifrado del cesar
Cifrado del cesarCifrado del cesar
Cifrado del cesar
 
Estructura Básica de PHP
Estructura Básica de PHPEstructura Básica de PHP
Estructura Básica de PHP
 
Php!
Php!Php!
Php!
 
Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...
Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...
Jaime Peñalba - Como defenderse en terreno hostil: Protecciones para la Defco...
 
Codigos
CodigosCodigos
Codigos
 
Especialista Web J9 Php
Especialista Web J9  PhpEspecialista Web J9  Php
Especialista Web J9 Php
 
3 curso php
3 curso php3 curso php
3 curso php
 
Funciones de Cadenas/ Computación para ingenieros
Funciones de Cadenas/ Computación para ingenierosFunciones de Cadenas/ Computación para ingenieros
Funciones de Cadenas/ Computación para ingenieros
 
José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]José Ramón Palanco - NoSQL Security [RootedCON 2011]
José Ramón Palanco - NoSQL Security [RootedCON 2011]
 
Guion scripts
Guion scriptsGuion scripts
Guion scripts
 
Intro a ruby
Intro a rubyIntro a ruby
Intro a ruby
 
Ruby 01
Ruby 01Ruby 01
Ruby 01
 
Php curso03
Php   curso03Php   curso03
Php curso03
 

Destacado

Behavioural psychology: unlocking value in strategic procurement - Chris Hugh...
Behavioural psychology: unlocking value in strategic procurement - Chris Hugh...Behavioural psychology: unlocking value in strategic procurement - Chris Hugh...
Behavioural psychology: unlocking value in strategic procurement - Chris Hugh...Global Business Intelligence
 
Wolfgang haupt frühes siegerlandorchester
Wolfgang haupt frühes siegerlandorchesterWolfgang haupt frühes siegerlandorchester
Wolfgang haupt frühes siegerlandorchestersiwiarchiv
 
Consumo Colaborativo - Afluenta - Encuentro Abril 2014
Consumo Colaborativo - Afluenta - Encuentro Abril 2014Consumo Colaborativo - Afluenta - Encuentro Abril 2014
Consumo Colaborativo - Afluenta - Encuentro Abril 2014greendrinksba
 
Tca (principales t arco)
Tca (principales t arco)Tca (principales t arco)
Tca (principales t arco)Jesus
 
SMS REKLAMLARINA YÖNELİK TÜKETİCİ TUTUMLARI - İspir & Suher
SMS REKLAMLARINA YÖNELİK TÜKETİCİ TUTUMLARI - İspir & SuherSMS REKLAMLARINA YÖNELİK TÜKETİCİ TUTUMLARI - İspir & Suher
SMS REKLAMLARINA YÖNELİK TÜKETİCİ TUTUMLARI - İspir & Suherfmkrm
 
Miriam y wolfgang
Miriam y wolfgangMiriam y wolfgang
Miriam y wolfgangMaria-wolf
 
Ncc art100 ch.7
Ncc art100 ch.7Ncc art100 ch.7
Ncc art100 ch.765swiss
 
Ms word 2010 a5 new khmer
Ms word 2010 a5 new khmerMs word 2010 a5 new khmer
Ms word 2010 a5 new khmerVuthea Chheang
 
Implementing SharePoint 2013 ECM Solutions
Implementing SharePoint 2013 ECM SolutionsImplementing SharePoint 2013 ECM Solutions
Implementing SharePoint 2013 ECM SolutionsRob Bogue
 
Claves para elaborar un curriculum y enfrentarse a una entrevista de trabajo
Claves para elaborar un curriculum y enfrentarse a una entrevista de trabajoClaves para elaborar un curriculum y enfrentarse a una entrevista de trabajo
Claves para elaborar un curriculum y enfrentarse a una entrevista de trabajoSocialBiblio
 
Log -Analytics with Apache-Flume Elasticsearch HDFS Kibana
Log -Analytics with Apache-Flume  Elasticsearch HDFS KibanaLog -Analytics with Apache-Flume  Elasticsearch HDFS Kibana
Log -Analytics with Apache-Flume Elasticsearch HDFS KibanaFelix Rodriguez
 
Malignant hyperthermia and dantrolene sodium
Malignant hyperthermia and dantrolene sodiumMalignant hyperthermia and dantrolene sodium
Malignant hyperthermia and dantrolene sodiumrajkumarsrihari
 
Presentación tarjetas gráficas
Presentación tarjetas gráficasPresentación tarjetas gráficas
Presentación tarjetas gráficastarjetasgraficas
 
Manual de Cinología 2016
Manual de Cinología 2016Manual de Cinología 2016
Manual de Cinología 2016Sergio Mensi
 

Destacado (20)

Behavioural psychology: unlocking value in strategic procurement - Chris Hugh...
Behavioural psychology: unlocking value in strategic procurement - Chris Hugh...Behavioural psychology: unlocking value in strategic procurement - Chris Hugh...
Behavioural psychology: unlocking value in strategic procurement - Chris Hugh...
 
Wolfgang haupt frühes siegerlandorchester
Wolfgang haupt frühes siegerlandorchesterWolfgang haupt frühes siegerlandorchester
Wolfgang haupt frühes siegerlandorchester
 
Consumo Colaborativo - Afluenta - Encuentro Abril 2014
Consumo Colaborativo - Afluenta - Encuentro Abril 2014Consumo Colaborativo - Afluenta - Encuentro Abril 2014
Consumo Colaborativo - Afluenta - Encuentro Abril 2014
 
La Gatera de la Villa nº 4
La Gatera de la Villa nº 4La Gatera de la Villa nº 4
La Gatera de la Villa nº 4
 
Tca (principales t arco)
Tca (principales t arco)Tca (principales t arco)
Tca (principales t arco)
 
SMS REKLAMLARINA YÖNELİK TÜKETİCİ TUTUMLARI - İspir & Suher
SMS REKLAMLARINA YÖNELİK TÜKETİCİ TUTUMLARI - İspir & SuherSMS REKLAMLARINA YÖNELİK TÜKETİCİ TUTUMLARI - İspir & Suher
SMS REKLAMLARINA YÖNELİK TÜKETİCİ TUTUMLARI - İspir & Suher
 
SSS15-Medical-Food
SSS15-Medical-FoodSSS15-Medical-Food
SSS15-Medical-Food
 
Miriam y wolfgang
Miriam y wolfgangMiriam y wolfgang
Miriam y wolfgang
 
SCI F28x
SCI F28xSCI F28x
SCI F28x
 
Ncc art100 ch.7
Ncc art100 ch.7Ncc art100 ch.7
Ncc art100 ch.7
 
Ms word 2010 a5 new khmer
Ms word 2010 a5 new khmerMs word 2010 a5 new khmer
Ms word 2010 a5 new khmer
 
Implementing SharePoint 2013 ECM Solutions
Implementing SharePoint 2013 ECM SolutionsImplementing SharePoint 2013 ECM Solutions
Implementing SharePoint 2013 ECM Solutions
 
Claves para elaborar un curriculum y enfrentarse a una entrevista de trabajo
Claves para elaborar un curriculum y enfrentarse a una entrevista de trabajoClaves para elaborar un curriculum y enfrentarse a una entrevista de trabajo
Claves para elaborar un curriculum y enfrentarse a una entrevista de trabajo
 
Log -Analytics with Apache-Flume Elasticsearch HDFS Kibana
Log -Analytics with Apache-Flume  Elasticsearch HDFS KibanaLog -Analytics with Apache-Flume  Elasticsearch HDFS Kibana
Log -Analytics with Apache-Flume Elasticsearch HDFS Kibana
 
Malignant hyperthermia and dantrolene sodium
Malignant hyperthermia and dantrolene sodiumMalignant hyperthermia and dantrolene sodium
Malignant hyperthermia and dantrolene sodium
 
Rpm examenes clinicos
Rpm examenes clinicosRpm examenes clinicos
Rpm examenes clinicos
 
Presentación tarjetas gráficas
Presentación tarjetas gráficasPresentación tarjetas gráficas
Presentación tarjetas gráficas
 
Manual de Cinología 2016
Manual de Cinología 2016Manual de Cinología 2016
Manual de Cinología 2016
 
Guide To Interview English Part 1 Cover Letter And Resume Writing 2012
Guide To Interview English Part 1 Cover Letter And Resume Writing 2012Guide To Interview English Part 1 Cover Letter And Resume Writing 2012
Guide To Interview English Part 1 Cover Letter And Resume Writing 2012
 
Amazon.com
Amazon.comAmazon.com
Amazon.com
 

Similar a Introducción a Ruby on Rails

Jruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMJruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMjavier ramirez
 
Ruby exposición
Ruby exposiciónRuby exposición
Ruby exposiciónrossel2018
 
Curso Swift
Curso SwiftCurso Swift
Curso SwiftPlatzi
 
Workshop Camp México 09 - Introducción a Ruby
Workshop Camp México 09 - Introducción a RubyWorkshop Camp México 09 - Introducción a Ruby
Workshop Camp México 09 - Introducción a RubyEdgar Suarez
 
Perl (practical extraction and report language)
Perl (practical extraction and report language)Perl (practical extraction and report language)
Perl (practical extraction and report language)Oliver Centeno
 
03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQueryDanae Aguilar Guzmán
 
Programación Políglota en la JVM
Programación Políglota en la JVMProgramación Políglota en la JVM
Programación Políglota en la JVMJano González
 
De 0 A Python En 40 Minutos
De 0 A Python En 40 MinutosDe 0 A Python En 40 Minutos
De 0 A Python En 40 Minutosflekoso
 
Introducción a RubyOnRails
Introducción a RubyOnRailsIntroducción a RubyOnRails
Introducción a RubyOnRailsPablo Marrero
 
Python Tutorial Presentation
Python Tutorial PresentationPython Tutorial Presentation
Python Tutorial Presentationguestccc92ad
 

Similar a Introducción a Ruby on Rails (20)

Ruby intro
Ruby introRuby intro
Ruby intro
 
Ruby
RubyRuby
Ruby
 
Jruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMJruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVM
 
Ruby para Java Developers
Ruby para Java DevelopersRuby para Java Developers
Ruby para Java Developers
 
Ruby
Ruby Ruby
Ruby
 
Idiomatic Ruby
Idiomatic RubyIdiomatic Ruby
Idiomatic Ruby
 
Ruby exposición
Ruby exposiciónRuby exposición
Ruby exposición
 
Curso Swift
Curso SwiftCurso Swift
Curso Swift
 
Perl1 escalares
Perl1 escalaresPerl1 escalares
Perl1 escalares
 
2 Introducción al lenguaje Ruby
2 Introducción al lenguaje Ruby2 Introducción al lenguaje Ruby
2 Introducción al lenguaje Ruby
 
Ruby
RubyRuby
Ruby
 
Workshop Camp México 09 - Introducción a Ruby
Workshop Camp México 09 - Introducción a RubyWorkshop Camp México 09 - Introducción a Ruby
Workshop Camp México 09 - Introducción a Ruby
 
01 el lenguaje Python
01 el lenguaje Python01 el lenguaje Python
01 el lenguaje Python
 
Perl (practical extraction and report language)
Perl (practical extraction and report language)Perl (practical extraction and report language)
Perl (practical extraction and report language)
 
03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery
 
Programación Políglota en la JVM
Programación Políglota en la JVMProgramación Políglota en la JVM
Programación Políglota en la JVM
 
Por qué Ruby
Por qué RubyPor qué Ruby
Por qué Ruby
 
De 0 A Python En 40 Minutos
De 0 A Python En 40 MinutosDe 0 A Python En 40 Minutos
De 0 A Python En 40 Minutos
 
Introducción a RubyOnRails
Introducción a RubyOnRailsIntroducción a RubyOnRails
Introducción a RubyOnRails
 
Python Tutorial Presentation
Python Tutorial PresentationPython Tutorial Presentation
Python Tutorial Presentation
 

Introducción a Ruby on Rails

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. Todo es un objeto 1.next #2 5.3.floor #5 ”hola mundo”.upcase # ”HOLA MUNDO” [3, 4, 1, 2].sort # [1, 2, 3, 4] nil.class # NilClass
  • 5. Estructuras condicionales if a == 1 puts ”a = 1” if a == 1 #a=1 elsif a == 2 unless correcto #a=2 else puts "¡incorrecto!" # cualquier otro valor end end
  • 6. Bucles for i in 1..10 while a < 10 puts i a+= 10 end end for letra in ['a', 'b', 'c', 'd'] puts letra end
  • 7. Arrays letras = ['a', 'b', 'c', 'd'] # ['a', 'b', 'c', 'd'] letras << 'e' # ['a', 'b', 'c', 'd', 'e'] letras[0] # 'a' letras.first # 'a' letras.length #5
  • 8. Símbolos  Objeto más básico en ruby  ”Literales de cadenas de texto constantes” "foo".object_id # -605211038 "foo".object_id # -605211058 :foo.object_id # 105218 :foo.object_id # 105218
  • 9. Hashes colores = { :rojo => "FF0000", :verde => "00FF00", :azul => "0000FF" } colores[:rojo] # ”FF0000”
  • 10. Iteradores y bloques numeros = [1, 3, 5, 2, 7, 9] #2 numeros.each do |n| #6 puts n * 2 # 10 end #4 # 14 # 18
  • 11. Métodos def suma(a, b, c) a+b+c end suma(1, 2, 3) #6
  • 12. Clases # 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
  • 13. Herencia class Triangulo < MiFigura def initialize(color) @lados = 3 @color = color end end
  • 14. Las clases no se cierran class Integer def al_cubo self ** 3 end end 4.al_cubo # 64
  • 15. ”Duck typing”  ”Si habla como un pato y camina como un pato, entonces es un pato” def duplica(obj) obj * 2 end puts duplica(5) # 10 puts duplica("hola") # ”holahola”
  • 16. 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”)
  • 17. 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...
  • 18. 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
  • 19. 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
  • 23. Recursos: Referencia • Info oficial:  ruby-lang.org  rubyonrails.org • API:  rubybrain.com  railsbrain.com
  • 24. Recursos: vídeos y material extra San Diego Ruby Users Group: podcast.sdruby.com
  • 25. 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