SlideShare uma empresa Scribd logo
1 de 46
Baixar para ler offline
CELTAB 
Centro Latino-Americano 
de Tecnologias Abertas
Ruby 
COMEÇANDO COM RUBY: DOS CONCEITOS AO PRIMEIRO CÓDIGO
SEICOM + ruby
Por que ruby ?!
● O que é o ruby? 
● Onde e como nasceu? 
● Para que serve?
Ruby Outras LPs
Vamos instalar o ruby? 
OBS: SO GNU/Linux!
Apt-get 
apt-get install ruby-1.9.3 
apt-get install ruby-2.1 
???
Compilando 
ruby-lang.org/en/downloads/ 
$ tar xfv ruby-2.1.3.tar.gz
Ruby Version Manager 
RVM é uma ferramenta de linha de comando 
que permite instalar, gerenciar e trabalhar com 
múltiplas versões de ruby e diversos conjuntos 
de gems.
rvm.io 
$ curl -sSL https://get.rvm.io | bash -s stable
“Ruby está projetado para fazer os 
programadores felizes.” 
Yukihiro “Matz” Matsumoto - Criador do Ruby
Ruby 
● Interpretada (YARV) 
● Totalmente Orientada a Objetos 
● Dinâmica 
● Fortemente Tipada 
● Gramática complexa, mas expressiva 
● Uma $ RICA $ Core API 
● Inspirada em Smalltalk, Lisp e Perl
➔ Scripts 
➔ Programação OO 
➔ Programação Funcional 
➔ Metaprogramação
Em ruby, tudo é objeto, sem exceções!
Variáveis não são objetos… 
… elas fazem referências a eles
Types 
value = 123 # => Fixnum 
value = “1234” # => String 
number = 1234 
string = “I’m a string” 
# Podemos somar ? 
puts number + string 
# => TypeError: String can't be coerced into Fixnum
Duck Typing 
“Se anda como um pato e faz barulho como um pato, 
então de deve ser um pato. E o interpretador ficará feliz 
em fazer com que o objeto seja tratado como um pato. Na 
prática, isso significa que em vez de fazer verificações de 
tipo de um objeto, você deve se preocupar se este objeto 
é capaz de executar o método que você precisa.” 
- Nando Vieira
Duck Typing 
class Marmot 
def initialize(message) 
@message = message 
end 
def quack 
puts “Quack: #{@message}” 
end 
end 
class Duck 
def initialize 
@name = “John Doe” 
end 
def quack 
puts “Quack, my name is #{@name}” 
end 
end 
duck_1 = Marmot.new “Marmots” 
duck_2 = Duck.new 
duck_1.quack # => “Quack: Marmots” 
duck_2.quack # => “Quack, my name is John Doe”
Strings 
message = “Galera!” 
o_message = ‘Hey’ 
o_message + “, e” + “ ai ” + message 
#=> “Hey, e ai Galera!”
Strings 
message = “Galera!” 
o_message = ‘Hey’ 
“#{o_message}, e ai #{message}” 
#=> “Hey, e ai Galera!” 
“Agora somando #{3 + 5}” 
#=> “Agora somando 8”
Números
Números
Arrays 
items = [ 1, “String”, 1.0, [ 2, 3], nil ] 
# => [ 1, “String”, 1.0, [ 2, 3], nil ] 
items[0] <=> items.first 
# => 1 
items = Array.new 
# => [ ] 
items = Array.new([ 1, 2, 3 ]) 
# => [ 1, 2, 3 ] 
words = %w[aa bb cc dd ee ff] 
# => [ “aa”, “bb”, “cc”, “dd”, “ee”, “ff” ] 
words[1] 
# => “bb”
Hash 
hash = { name: “John”, 
last_name: “Doe”, 
zombie: false, 
age: 1e10 } 
# => { name: “John”, last_name: “Doe”, zombie: false, age: 1e10 } 
hash[:name] 
# => “John” 
hash[:new_value] = { b: “something”, ‘another_value’ => “wow” } 
hash.inspect 
# => { name: “John”, last_name: “Doe”, zombie: false, age: 1e10, { b: 
“something”, ‘another_value’ => “wow” } }
Symbols
Expressões 
regulares
Módulos
Classes 
module Zombie 
class Zombie 
def initialize 
@name = "John Doe" 
@brains_eaten = 0 
end 
def tweet 
"I want brains!" 
end 
def eat(n = 1) 
@brains_eaten += n 
end 
def rooting 
"Yeap" 
end 
def status 
{ :status => "I just ate some delicious brains", 
:zombie => @name } 
end 
end 
end
Herança 
class Walker < Zombie 
def walk 
# do something 
Obs: ‘Não existe herança múltipla em ruby’ 
end 
end
Mixins module SuperHero 
def super_powers 
# Do something 
end 
end 
module Fly 
def fly 
#Do something 
end 
end 
class Goku 
include SuperHero 
include Fly 
def saiyan 
@@force *= :infinite 
end 
end 
class Hulk 
include SuperHero 
def say 
"Hulk smash!" 
end 
end
Self e SingletonClass 
Métodos de classe não existem no Ruby! 
Pelo menos não no sentido de métodos estáticos. 
O que acontece é que estes métodos pertencem a 
um objeto, que por acaso é uma classe. 
- Nando Vieira
E o que mais? 
● Condicionais (if, else, elseif, unless) 
● Seletor Múltiplo (Case) 
● Estruturas de repetição(for...in, while..until, loop) 
● Iteradores (Enumerator, Iterator) 
● Closures 
● Procs e Lambdas 
● Variáveis (Classe, instância) 
● Constantes 
● CallBacks 
● Monkey Patching e Refinements
Como continuar?
Try ruby! 
tryruby.org
Como continuar? 
codeschool.com/paths/ruby
github.com/markets/awesome-ruby 
lista de 100+ ferramentas ruby para tudo!
github.com/bbatsov/ruby-style-guide 
De quem “manja” para a comunidade!
Considerações finais
kenner.hp@gmail.com 
github.com/gnomex 
@KennerKliemann 
slideshare/kennerkliemann 
linkedin.com/in/kennerkliemann
Começando com Ruby: dos conceitos ao primeiro código

Mais conteúdo relacionado

Mais procurados

tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScriptClaudio Gamboa
 
Voodoo é pra Jacu - Entendendo metaprogramação em ruby
Voodoo é pra Jacu - Entendendo metaprogramação em rubyVoodoo é pra Jacu - Entendendo metaprogramação em ruby
Voodoo é pra Jacu - Entendendo metaprogramação em rubyDavid Paniz
 
Introdução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em RailsIntrodução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em Railsoverduka
 
Apresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBAApresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBALuciano Borges
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyDiego Rubin
 
Ruby + Rails no Mundo Real 2010 - Voodoo é pra Jacu - Entendendo metaprograma...
Ruby + Rails no Mundo Real 2010 - Voodoo é pra Jacu - Entendendo metaprograma...Ruby + Rails no Mundo Real 2010 - Voodoo é pra Jacu - Entendendo metaprograma...
Ruby + Rails no Mundo Real 2010 - Voodoo é pra Jacu - Entendendo metaprograma...David Paniz
 
Introdução à programação em Ruby
Introdução à programação em RubyIntrodução à programação em Ruby
Introdução à programação em RubyDaniel Andrade
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Marcelo Bohn
 

Mais procurados (11)

tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
 
Voodoo é pra Jacu - Entendendo metaprogramação em ruby
Voodoo é pra Jacu - Entendendo metaprogramação em rubyVoodoo é pra Jacu - Entendendo metaprogramação em ruby
Voodoo é pra Jacu - Entendendo metaprogramação em ruby
 
Introdução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em RailsIntrodução á linguagem Ruby com aplicativo em Rails
Introdução á linguagem Ruby com aplicativo em Rails
 
Apresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBAApresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBA
 
Introdução ao JavaScript
Introdução ao JavaScriptIntrodução ao JavaScript
Introdução ao JavaScript
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
 
Ruby + Rails no Mundo Real 2010 - Voodoo é pra Jacu - Entendendo metaprograma...
Ruby + Rails no Mundo Real 2010 - Voodoo é pra Jacu - Entendendo metaprograma...Ruby + Rails no Mundo Real 2010 - Voodoo é pra Jacu - Entendendo metaprograma...
Ruby + Rails no Mundo Real 2010 - Voodoo é pra Jacu - Entendendo metaprograma...
 
jQuery
jQueryjQuery
jQuery
 
Introdução à programação em Ruby
Introdução à programação em RubyIntrodução à programação em Ruby
Introdução à programação em Ruby
 
Apresentação ruby + rails 2014
Apresentação ruby + rails 2014Apresentação ruby + rails 2014
Apresentação ruby + rails 2014
 
JavaScript Hacks
JavaScript HacksJavaScript Hacks
JavaScript Hacks
 

Destaque

Garbage collection no Ruby
Garbage collection no RubyGarbage collection no Ruby
Garbage collection no RubyLauro Caetano
 
Perl Moderno, dia1
Perl Moderno, dia1Perl Moderno, dia1
Perl Moderno, dia1garux
 
Análise de Segurança dos Sistemas Criptográficos Utilizados em Redes IEEE 802.11
Análise de Segurança dos Sistemas Criptográficos Utilizados em Redes IEEE 802.11Análise de Segurança dos Sistemas Criptográficos Utilizados em Redes IEEE 802.11
Análise de Segurança dos Sistemas Criptográficos Utilizados em Redes IEEE 802.11Aline Cruz
 
Shell script ii direcionadores
Shell script ii  direcionadoresShell script ii  direcionadores
Shell script ii direcionadoresCarlos Melo
 
Cyberwar - Ainda podemos proteger nossos dados?
Cyberwar - Ainda podemos proteger nossos dados?Cyberwar - Ainda podemos proteger nossos dados?
Cyberwar - Ainda podemos proteger nossos dados?Paulo Veloso
 
Novas ameaças do mundo conectado
Novas ameaças do mundo conectadoNovas ameaças do mundo conectado
Novas ameaças do mundo conectadoAlberto Oliveira
 
Ruby - praticamente falando
Ruby - praticamente falandoRuby - praticamente falando
Ruby - praticamente falandos4nx
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetMarcos Petry
 
HACKERSPACES - Ética Hacker e Educação
HACKERSPACES - Ética Hacker e EducaçãoHACKERSPACES - Ética Hacker e Educação
HACKERSPACES - Ética Hacker e EducaçãoLucas Costa
 
Seja um Perl Core Hacker - é (muito) mais fácil do que você pensa
Seja um Perl Core Hacker - é (muito) mais fácil do que você pensaSeja um Perl Core Hacker - é (muito) mais fácil do que você pensa
Seja um Perl Core Hacker - é (muito) mais fácil do que você pensagarux
 
Pentest em SharePoint (ROADSEC2014)
Pentest em SharePoint (ROADSEC2014)Pentest em SharePoint (ROADSEC2014)
Pentest em SharePoint (ROADSEC2014)Victor Ribeiro
 
Hackeando o Facebook e o Twitter com Python TI no Vale
Hackeando o Facebook e o Twitter com Python TI no ValeHackeando o Facebook e o Twitter com Python TI no Vale
Hackeando o Facebook e o Twitter com Python TI no ValeFATEC São José dos Campos
 
Apostila ruby-completa
Apostila ruby-completaApostila ruby-completa
Apostila ruby-completamako2887
 

Destaque (20)

A Linguagem Ruby
A Linguagem RubyA Linguagem Ruby
A Linguagem Ruby
 
Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
 
Garbage collection no Ruby
Garbage collection no RubyGarbage collection no Ruby
Garbage collection no Ruby
 
Introdução ao perl
Introdução ao perlIntrodução ao perl
Introdução ao perl
 
antivirus
antivirusantivirus
antivirus
 
Web crawler
Web crawlerWeb crawler
Web crawler
 
Canivete python
Canivete pythonCanivete python
Canivete python
 
Perl Moderno, dia1
Perl Moderno, dia1Perl Moderno, dia1
Perl Moderno, dia1
 
Análise de Segurança dos Sistemas Criptográficos Utilizados em Redes IEEE 802.11
Análise de Segurança dos Sistemas Criptográficos Utilizados em Redes IEEE 802.11Análise de Segurança dos Sistemas Criptográficos Utilizados em Redes IEEE 802.11
Análise de Segurança dos Sistemas Criptográficos Utilizados em Redes IEEE 802.11
 
Shell script ii direcionadores
Shell script ii  direcionadoresShell script ii  direcionadores
Shell script ii direcionadores
 
Cyberwar - Ainda podemos proteger nossos dados?
Cyberwar - Ainda podemos proteger nossos dados?Cyberwar - Ainda podemos proteger nossos dados?
Cyberwar - Ainda podemos proteger nossos dados?
 
Novas ameaças do mundo conectado
Novas ameaças do mundo conectadoNovas ameaças do mundo conectado
Novas ameaças do mundo conectado
 
Ruby - praticamente falando
Ruby - praticamente falandoRuby - praticamente falando
Ruby - praticamente falando
 
Python mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internetPython mudando o modo de desenvolver para a internet
Python mudando o modo de desenvolver para a internet
 
Curso de perl
Curso de perlCurso de perl
Curso de perl
 
HACKERSPACES - Ética Hacker e Educação
HACKERSPACES - Ética Hacker e EducaçãoHACKERSPACES - Ética Hacker e Educação
HACKERSPACES - Ética Hacker e Educação
 
Seja um Perl Core Hacker - é (muito) mais fácil do que você pensa
Seja um Perl Core Hacker - é (muito) mais fácil do que você pensaSeja um Perl Core Hacker - é (muito) mais fácil do que você pensa
Seja um Perl Core Hacker - é (muito) mais fácil do que você pensa
 
Pentest em SharePoint (ROADSEC2014)
Pentest em SharePoint (ROADSEC2014)Pentest em SharePoint (ROADSEC2014)
Pentest em SharePoint (ROADSEC2014)
 
Hackeando o Facebook e o Twitter com Python TI no Vale
Hackeando o Facebook e o Twitter com Python TI no ValeHackeando o Facebook e o Twitter com Python TI no Vale
Hackeando o Facebook e o Twitter com Python TI no Vale
 
Apostila ruby-completa
Apostila ruby-completaApostila ruby-completa
Apostila ruby-completa
 

Semelhante a Começando com Ruby: dos conceitos ao primeiro código

Ruby para-programadores-php
Ruby para-programadores-phpRuby para-programadores-php
Ruby para-programadores-phpJuan Maiz
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsLucas Caton
 
Apresentação ruby + rails
Apresentação ruby + railsApresentação ruby + rails
Apresentação ruby + railsMarcelo Bohn
 
Workshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-ptWorkshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-ptPedro Sousa
 
Plataforma java: detalhes da JVM
Plataforma java: detalhes da JVMPlataforma java: detalhes da JVM
Plataforma java: detalhes da JVMCaelum
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Railsismaelstahelin
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - BrazilStephen Chin
 
Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)Hugo Maia Vieira
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011JogosUnisinos
 
Workshop ExtJS4
Workshop ExtJS4Workshop ExtJS4
Workshop ExtJS4javamanrj
 
Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell scriptbrunobione
 

Semelhante a Começando com Ruby: dos conceitos ao primeiro código (20)

Ruby para-programadores-php
Ruby para-programadores-phpRuby para-programadores-php
Ruby para-programadores-php
 
Ruby aula01
Ruby aula01Ruby aula01
Ruby aula01
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on Rails
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Apresentação ruby + rails
Apresentação ruby + railsApresentação ruby + rails
Apresentação ruby + rails
 
Php
PhpPhp
Php
 
Workshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-ptWorkshop Ruby on Rails dia 1 ruby-pt
Workshop Ruby on Rails dia 1 ruby-pt
 
Plataforma java: detalhes da JVM
Plataforma java: detalhes da JVMPlataforma java: detalhes da JVM
Plataforma java: detalhes da JVM
 
Shell script
Shell scriptShell script
Shell script
 
Ruby learning
Ruby learningRuby learning
Ruby learning
 
O mundo visto de dentro do Ruby
O mundo visto de dentro do RubyO mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil55 New Things in Java 7 - Brazil
55 New Things in Java 7 - Brazil
 
Rails for Dummies
Rails for DummiesRails for Dummies
Rails for Dummies
 
Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)Introdução ao Shell Script (versão estendida)
Introdução ao Shell Script (versão estendida)
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
 
Ecossistema Python
Ecossistema PythonEcossistema Python
Ecossistema Python
 
Workshop ExtJS4
Workshop ExtJS4Workshop ExtJS4
Workshop ExtJS4
 
Oficina de shell script
Oficina de shell scriptOficina de shell script
Oficina de shell script
 
Minicurso Ruby on Rails
Minicurso Ruby on RailsMinicurso Ruby on Rails
Minicurso Ruby on Rails
 

Começando com Ruby: dos conceitos ao primeiro código

  • 1. CELTAB Centro Latino-Americano de Tecnologias Abertas
  • 2. Ruby COMEÇANDO COM RUBY: DOS CONCEITOS AO PRIMEIRO CÓDIGO
  • 5.
  • 6. ● O que é o ruby? ● Onde e como nasceu? ● Para que serve?
  • 8. Vamos instalar o ruby? OBS: SO GNU/Linux!
  • 9. Apt-get apt-get install ruby-1.9.3 apt-get install ruby-2.1 ???
  • 10. Compilando ruby-lang.org/en/downloads/ $ tar xfv ruby-2.1.3.tar.gz
  • 11. Ruby Version Manager RVM é uma ferramenta de linha de comando que permite instalar, gerenciar e trabalhar com múltiplas versões de ruby e diversos conjuntos de gems.
  • 12. rvm.io $ curl -sSL https://get.rvm.io | bash -s stable
  • 13.
  • 14.
  • 15.
  • 16. “Ruby está projetado para fazer os programadores felizes.” Yukihiro “Matz” Matsumoto - Criador do Ruby
  • 17. Ruby ● Interpretada (YARV) ● Totalmente Orientada a Objetos ● Dinâmica ● Fortemente Tipada ● Gramática complexa, mas expressiva ● Uma $ RICA $ Core API ● Inspirada em Smalltalk, Lisp e Perl
  • 18. ➔ Scripts ➔ Programação OO ➔ Programação Funcional ➔ Metaprogramação
  • 19. Em ruby, tudo é objeto, sem exceções!
  • 20. Variáveis não são objetos… … elas fazem referências a eles
  • 21. Types value = 123 # => Fixnum value = “1234” # => String number = 1234 string = “I’m a string” # Podemos somar ? puts number + string # => TypeError: String can't be coerced into Fixnum
  • 22. Duck Typing “Se anda como um pato e faz barulho como um pato, então de deve ser um pato. E o interpretador ficará feliz em fazer com que o objeto seja tratado como um pato. Na prática, isso significa que em vez de fazer verificações de tipo de um objeto, você deve se preocupar se este objeto é capaz de executar o método que você precisa.” - Nando Vieira
  • 23. Duck Typing class Marmot def initialize(message) @message = message end def quack puts “Quack: #{@message}” end end class Duck def initialize @name = “John Doe” end def quack puts “Quack, my name is #{@name}” end end duck_1 = Marmot.new “Marmots” duck_2 = Duck.new duck_1.quack # => “Quack: Marmots” duck_2.quack # => “Quack, my name is John Doe”
  • 24. Strings message = “Galera!” o_message = ‘Hey’ o_message + “, e” + “ ai ” + message #=> “Hey, e ai Galera!”
  • 25. Strings message = “Galera!” o_message = ‘Hey’ “#{o_message}, e ai #{message}” #=> “Hey, e ai Galera!” “Agora somando #{3 + 5}” #=> “Agora somando 8”
  • 28. Arrays items = [ 1, “String”, 1.0, [ 2, 3], nil ] # => [ 1, “String”, 1.0, [ 2, 3], nil ] items[0] <=> items.first # => 1 items = Array.new # => [ ] items = Array.new([ 1, 2, 3 ]) # => [ 1, 2, 3 ] words = %w[aa bb cc dd ee ff] # => [ “aa”, “bb”, “cc”, “dd”, “ee”, “ff” ] words[1] # => “bb”
  • 29. Hash hash = { name: “John”, last_name: “Doe”, zombie: false, age: 1e10 } # => { name: “John”, last_name: “Doe”, zombie: false, age: 1e10 } hash[:name] # => “John” hash[:new_value] = { b: “something”, ‘another_value’ => “wow” } hash.inspect # => { name: “John”, last_name: “Doe”, zombie: false, age: 1e10, { b: “something”, ‘another_value’ => “wow” } }
  • 33. Classes module Zombie class Zombie def initialize @name = "John Doe" @brains_eaten = 0 end def tweet "I want brains!" end def eat(n = 1) @brains_eaten += n end def rooting "Yeap" end def status { :status => "I just ate some delicious brains", :zombie => @name } end end end
  • 34. Herança class Walker < Zombie def walk # do something Obs: ‘Não existe herança múltipla em ruby’ end end
  • 35. Mixins module SuperHero def super_powers # Do something end end module Fly def fly #Do something end end class Goku include SuperHero include Fly def saiyan @@force *= :infinite end end class Hulk include SuperHero def say "Hulk smash!" end end
  • 36. Self e SingletonClass Métodos de classe não existem no Ruby! Pelo menos não no sentido de métodos estáticos. O que acontece é que estes métodos pertencem a um objeto, que por acaso é uma classe. - Nando Vieira
  • 37. E o que mais? ● Condicionais (if, else, elseif, unless) ● Seletor Múltiplo (Case) ● Estruturas de repetição(for...in, while..until, loop) ● Iteradores (Enumerator, Iterator) ● Closures ● Procs e Lambdas ● Variáveis (Classe, instância) ● Constantes ● CallBacks ● Monkey Patching e Refinements
  • 41. github.com/markets/awesome-ruby lista de 100+ ferramentas ruby para tudo!
  • 42. github.com/bbatsov/ruby-style-guide De quem “manja” para a comunidade!
  • 43.
  • 45. kenner.hp@gmail.com github.com/gnomex @KennerKliemann slideshare/kennerkliemann linkedin.com/in/kennerkliemann