Download - O mundo visto de dentro do Ruby
![Page 1: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/1.jpg)
O mundo visto de dentro doRuby
![Page 2: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/2.jpg)
![Page 3: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/3.jpg)
2007
![Page 4: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/4.jpg)
Ciência da Computação
2007
![Page 5: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/5.jpg)
![Page 6: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/6.jpg)
E vocês, já ouviram falar ou usaram Ruby?
![Page 7: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/7.jpg)
![Page 8: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/8.jpg)
Yukihiro “Matz” Matsumoto
![Page 9: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/9.jpg)
Yukihiro “Matz” Matsumoto
“Se você terminar seu trabalho rápido e de forma divertida, isso não é bom?”
![Page 10: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/10.jpg)
“Se você terminar seu trabalho rápido e de forma divertida, isso não é bom?”
“Eu queria uma linguagem mais poderosaque perl, e mais orientada a objetos que
Python. Foi por isso que eu decidi projetarminha própria linguagem.”
Yukihiro “Matz” Matsumoto
![Page 11: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/11.jpg)
1993Primeiros rabiscos
Yukihiro “Matz” Matsumoto
![Page 12: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/12.jpg)
1993Primeiros rabiscos
1995Primeiro release público
Yukihiro “Matz” Matsumoto
![Page 13: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/13.jpg)
Sintaxe simples, inspirada por Ada, Eiffel e Perl
Semântica compacta, inspirada por Smalltalk
Object Model igual ao de Smalltalk
Expressões regulares do Perl
Conceitos de linguagem funcional
Características do C e C++
![Page 14: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/14.jpg)
Sintaxe simples, inspirada por Ada, Eiffel e Perl
Semântica compacta, inspirada por Smalltalk
Object Model igual ao de Smalltalk
Expressões regulares do Perl
Conceitos de linguagem funcional
Características do C e C++
![Page 15: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/15.jpg)
Produtividade no desenvolvedor
Simplicidade
Linguagem humana
Linguagem dinâmica e reflexiva
Extensibilidade
Todas as classes são abertas
Herança simples e mixins
DSL’s
Garbage collector
![Page 16: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/16.jpg)
Ruby 1.8.7 e 1.9.2
![Page 17: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/17.jpg)
Ruby 1.8.7 e 1.9.2
REE 1.8.7-2010.2
![Page 18: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/18.jpg)
Ruby 1.8.7 e 1.9.2
REE 1.8.7-2010.2
Rubinius 1.0.1
![Page 19: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/19.jpg)
Ruby 1.8.7 e 1.9.2
REE 1.8.7-2010.2
Rubinius 1.0.1
JRuby 1.5.X (Java)
![Page 20: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/20.jpg)
Ruby 1.8.7 e 1.9.2
REE 1.8.7-2010.2
Rubinius 1.0.1
JRuby 1.5.X (Java)
MacRuby 0.6 (Objective-C)
![Page 21: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/21.jpg)
Ruby 1.8.7 e 1.9.2
REE 1.8.7-2010.2
Rubinius 1.0.1
JRuby 1.5.X (Java)
MacRuby 0.6 (Objective-C)
MagLev Beta (Smalltalk)
![Page 22: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/22.jpg)
Ruby 1.8.7 e 1.9.2
REE 1.8.7-2010.2
Rubinius 1.0.1
JRuby 1.5.X (Java)
MacRuby 0.6 (Objective-C)
MagLev Beta (Smalltalk)
IronRuby 1.1 (.NET)
![Page 23: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/23.jpg)
Mas, por que Ruby?
![Page 24: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/24.jpg)
“Tornar as coisas simples fáceis e as coisas complexas possíveis.”
Filosofia Ruby
![Page 25: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/25.jpg)
Focado no humano
3.times doprint “Wee”
end
![Page 26: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/26.jpg)
3.times doprint “Wee”
end
feed_dog if @dog.hungry?
Focado no humano
![Page 27: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/27.jpg)
3.times doprint “Wee”
end
feed_dog if @dog.hungry?
['beer', 'vodka', 'wine'].each |drink| doprint drink.capitalize
end
Focado no humano
![Page 28: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/28.jpg)
Verdadeiramente OO
Tudo é objeto, não há sequer tipo primitivo.
![Page 29: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/29.jpg)
Verdadeiramente OO
Tudo é objeto, não há sequer tipo primitivo.
>> 1.class=> Fixnum>> 1.class.class=> Class>> nil.class=> NilClass
![Page 30: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/30.jpg)
Código “bonito”
![Page 31: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/31.jpg)
![Page 32: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/32.jpg)
![Page 33: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/33.jpg)
![Page 34: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/34.jpg)
![Page 35: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/35.jpg)
![Page 36: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/36.jpg)
140vs
40
![Page 37: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/37.jpg)
“Eu sempre soube que Smalltalk substituiriaJava. Só não sabia que isso se chamaria Ruby.”
Kent Beck, Criador do "Extreme Programming" e "TDD"
![Page 38: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/38.jpg)
O que podemos fazer com Ruby...
![Page 39: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/39.jpg)
No desktop
![Page 40: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/40.jpg)
Bowline Titanium
![Page 41: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/41.jpg)
Bowline
Shoes
Titanium
GTK+
![Page 42: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/42.jpg)
Bowline
Shoes
wxRuby
Titanium
GTK+
Win32 widgetsAqua, GTK+
![Page 43: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/43.jpg)
Bowline
Shoes
wxRuby
QtRuby
Titanium
GTK+
Win32 widgetsAqua, GTK+
Qt
![Page 44: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/44.jpg)
Bowline
Shoes
wxRuby
QtRuby
Titanium
GTK+
Win32 widgetsAqua, GTK+
Qt
Ruby Cocoa Cocoa
![Page 45: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/45.jpg)
Na web
![Page 46: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/46.jpg)
David “dhh” Heinemeier Hansson
![Page 47: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/47.jpg)
2004
David “dhh” Heinemeier Hansson
![Page 48: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/48.jpg)
2004
David “dhh” Heinemeier Hansson
![Page 49: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/49.jpg)
2.3.8 3.0.0
![Page 50: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/50.jpg)
Código gerando código
Convenção sobre configuração
DRY (don't repeat yourself)
Produtividade sustentável
Desenvolvimento ágil
Diversão
![Page 51: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/51.jpg)
Sinatra
![Page 52: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/52.jpg)
require 'rubygems'require 'sinatra'get '/hi' do"Hello World!"
end
![Page 53: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/53.jpg)
![Page 54: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/54.jpg)
![Page 55: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/55.jpg)
Ferramentas
![Page 56: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/56.jpg)
1.8.7 + 1.9.2 + REE + JRuby + Rubinius +MagLev + IronRuby + MacRuby
![Page 57: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/57.jpg)
RVM
=
1.8.7 + 1.9.2 + REE + JRuby + Rubinius +MagLev + IronRuby + MacRuby
![Page 58: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/58.jpg)
Repositórios Github, Codebase
![Page 59: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/59.jpg)
Repositórios
Integração contínua
Github, Codebase
Hudson, Cruise
![Page 60: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/60.jpg)
Repositórios
Integração contínua
Deploy
Github, Codebase
Hudson, Cruise
Puppet, ChefCapistrano
![Page 61: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/61.jpg)
Repositórios
Integração contínua
Deploy
Monitoramento
Github, Codebase
Hudson, Cruise
Puppet, ChefCapistrano
NewRelic, ScoutBackupMyApp
![Page 62: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/62.jpg)
Repositórios
Integração contínua
Deploy
Monitoramento
Github, Codebase
Hudson, Cruise
Puppet, ChefCapistrano
NewRelic, ScoutBackupMyApp
Servidores Passenger,Mongrel, Thin
![Page 63: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/63.jpg)
Testes
Cucumber, Steak, RSpec, Minitest, Test::Unit, Shoulda, Bacon,
Machinist, Factory Girl, Mocha
![Page 64: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/64.jpg)
Minispec
http://gist.github.com/433067
![Page 65: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/65.jpg)
Cucumber
http://github.com/danielvlopes/buggy/blob/master/features/authenticate.feature
![Page 66: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/66.jpg)
Steak
![Page 67: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/67.jpg)
![Page 68: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/68.jpg)
![Page 69: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/69.jpg)
![Page 70: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/70.jpg)
![Page 71: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/71.jpg)
![Page 72: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/72.jpg)
Comunidade
![Page 73: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/73.jpg)
![Page 74: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/74.jpg)
![Page 75: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/75.jpg)
![Page 76: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/76.jpg)
![Page 77: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/77.jpg)
![Page 78: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/78.jpg)
![Page 79: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/79.jpg)
Ué, mas não dizem queRuby é lento?
![Page 80: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/80.jpg)
![Page 81: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/81.jpg)
![Page 82: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/82.jpg)
Performance
Escalabilidade
!=
![Page 83: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/83.jpg)
“O The New York Times usou Ruby on Rails para agregar,analisar e mostrar os resultados das eleições em quase tempo
real em um de seus sites mais acessados de todos ostempos.”
http://www.computerworld.com.au/article/268003/ruby_rails_rolls_into_enterprise/?fp=16&fpid=1
![Page 84: O mundo visto de dentro do Ruby](https://reader031.vdocuments.com.br/reader031/viewer/2022020122/5555a8f2d8b42a52568b47e6/html5/thumbnails/84.jpg)
Agradecimentos
@akitaonrails (Fábio Akita)
@danielvlopes (Daniel V. Lopes)