fun driven development com ruby
DESCRIPTION
My presentation about Ruby at TDC2011 - The developers conferenceTRANSCRIPT
![Page 1: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/1.jpg)
Fun Driven Development com Ruby
@tomas_stefanohttps://github.com/tomas-stefano
http://rubycasts.com.br/
sábado, 9 de julho de 2011
![Page 2: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/2.jpg)
Objetivo
- VOCÊ IRÁ APRENDER UMA COISA NOVA DE RUBY. OU VOCÊ IRÁ APRENDER UMA COISA NOVA.
sábado, 9 de julho de 2011
![Page 3: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/3.jpg)
Era uma vez ...
OBS.: Tirada de uma apresentação do Ryan Davis
sábado, 9 de julho de 2011
![Page 4: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/4.jpg)
Mesa de trabalho
sábado, 9 de julho de 2011
![Page 5: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/5.jpg)
Lendo o Código
sábado, 9 de julho de 2011
![Page 6: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/6.jpg)
Ninho de Rato
sábado, 9 de julho de 2011
![Page 7: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/7.jpg)
Ficou nervoso ...
sábado, 9 de julho de 2011
![Page 8: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/8.jpg)
Atirou em todo mundo
sábado, 9 de julho de 2011
![Page 9: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/9.jpg)
Foi preso!
sábado, 9 de julho de 2011
![Page 10: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/10.jpg)
OU:SEGUNDA VERSÃO!
sábado, 9 de julho de 2011
![Page 11: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/11.jpg)
Novo trabalho!
sábado, 9 de julho de 2011
![Page 12: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/12.jpg)
Mesa de trabalho
sábado, 9 de julho de 2011
![Page 13: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/13.jpg)
Lendo o Código
sábado, 9 de julho de 2011
![Page 14: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/14.jpg)
Ninho de Rato
sábado, 9 de julho de 2011
![Page 15: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/15.jpg)
Ficou nervoso ...
sábado, 9 de julho de 2011
![Page 16: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/16.jpg)
Seus conhecimentos
sábado, 9 de julho de 2011
![Page 17: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/17.jpg)
Resolveu o problema(um por um)
sábado, 9 de julho de 2011
![Page 18: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/18.jpg)
Mostrou quem manda!
sábado, 9 de julho de 2011
![Page 19: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/19.jpg)
Moral da história
sábado, 9 de julho de 2011
![Page 20: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/20.jpg)
Pessoas vão te incriminar se você
machucá-las!
sábado, 9 de julho de 2011
![Page 21: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/21.jpg)
O código não! :)
sábado, 9 de julho de 2011
![Page 22: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/22.jpg)
O que é código legado?
Muitos dizem: “Todo código, que você não escreveu, é legado”.
sábado, 9 de julho de 2011
![Page 23: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/23.jpg)
O que é código legado?
Muitos dizem: “Todo código, que você não escreveu, é legado”.
Outros dizem: “Todo código, que você não escreveu e não possui testes, é legado”.
sábado, 9 de julho de 2011
![Page 24: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/24.jpg)
O que é código legado?
Muitos dizem: “Todo código, que você não escreveu, é legado”.
Outros dizem: “Todo código, que você não escreveu e não possui testes, é legado”.
Outros pensaram: “Mas até o meu próprio código que eu escrevo, que “apenas funciona” vira um legado depois de algumas semanas ...”.
sábado, 9 de julho de 2011
![Page 25: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/25.jpg)
Código Legado
sábado, 9 de julho de 2011
![Page 26: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/26.jpg)
O começo é díficil!
sábado, 9 de julho de 2011
![Page 27: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/27.jpg)
Lidando com a Complexidade
sábado, 9 de julho de 2011
![Page 28: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/28.jpg)
Alguma gem de Testes
sábado, 9 de julho de 2011
![Page 29: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/29.jpg)
RSpec
chunky_bacon.should be_awesome
sábado, 9 de julho de 2011
![Page 30: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/30.jpg)
Shoulda
chunky_bacon_should_be :awesome
sábado, 9 de julho de 2011
![Page 31: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/31.jpg)
Test::Unit
assert_equal(:awesome, chunky_bacon)
sábado, 9 de julho de 2011
![Page 32: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/32.jpg)
Fake Objects
sábado, 9 de julho de 2011
![Page 33: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/33.jpg)
Mochabacon = stub(:awesome => true)bacon.expects(:taste).returns('good')
sábado, 9 de julho de 2011
![Page 34: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/34.jpg)
Flexmockbacon = flexmock(:awesome => true)bacon.should_receive(:taste).and_return('good')
sábado, 9 de julho de 2011
![Page 35: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/35.jpg)
RSpec Mocks e Stubs
bacon.stub!(:awesome).and_return(true)bacon.should_receive(:taste).and_return('good')
sábado, 9 de julho de 2011
![Page 36: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/36.jpg)
RR
stub(bacon).awesome{true}stub(bacon).taste{'good'}
sábado, 9 de julho de 2011
![Page 37: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/37.jpg)
Métricas
sábado, 9 de julho de 2011
![Page 38: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/38.jpg)
Flog
• 1 a 10: Parabéns!
• 11 a 20: Não tão ruim assim ...
• 21 a 40: Talvez precise refatorar
• 41 a 60: Escreva de novo
• 61 a 100: WTF are you trying to do?
sábado, 9 de julho de 2011
![Page 39: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/39.jpg)
Flog
• 1 a 10: Parabéns!
• 11 a 20: Não tão ruim assim ...
• 21 a 40: Talvez precise refatorar
• 41 a 60: Escreva de novo
• 61 a 100: WTF are you trying to do?
sábado, 9 de julho de 2011
![Page 40: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/40.jpg)
Flog
• 1 a 10: Parabéns!
• 11 a 20: Não tão ruim assim ...
• 21 a 40: Talvez precise refatorar
• 41 a 60: Escreva de novo
• 61 a 100: WTF are you trying to do?
sábado, 9 de julho de 2011
![Page 41: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/41.jpg)
Flog
• 1 a 10: Parabéns!
• 11 a 20: Não tão ruim assim ...
• 21 a 40: Talvez precise refatorar
• 41 a 60: Escreva de novo
• 61 a 100: WTF are you trying to do?
sábado, 9 de julho de 2011
![Page 42: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/42.jpg)
Flog
• 1 a 10: Parabéns!
• 11 a 20: Não tão ruim assim ...
• 21 a 40: Talvez precise refatorar
• 41 a 60: Escreva de novo
• 61 a 100: o.O - WTF are you trying to do?
sábado, 9 de julho de 2011
![Page 43: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/43.jpg)
Flog
sábado, 9 de julho de 2011
![Page 44: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/44.jpg)
Flay
sábado, 9 de julho de 2011
![Page 45: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/45.jpg)
SimpleCov
require 'simplecov'SimpleCov.start
Cobertura de Código:
sábado, 9 de julho de 2011
![Page 46: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/46.jpg)
Simplecov
sábado, 9 de julho de 2011
![Page 47: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/47.jpg)
Simplecov
sábado, 9 de julho de 2011
![Page 48: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/48.jpg)
RoodiProblemas de design no seu código
sábado, 9 de julho de 2011
![Page 49: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/49.jpg)
Repita Comigo
• “Medir e analisar meu código, serve para conhecer o meu próprio código.” Brian Liles (TAFT - Test all the F* time)
sábado, 9 de julho de 2011
![Page 50: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/50.jpg)
Testes de AceitaçãoSteak
sábado, 9 de julho de 2011
![Page 51: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/51.jpg)
CucumberFuncionalidade: Relatorio Completo Sendo cliente Quero o Relatório Completo com os dados dos meus clientes Para uma Analise de crédito de uma ou várias empresas
Cenário: Identificação da Empresa Filial Dado que estou consultando um CNPJ de uma empresa "filial" Quando eu aperto "Consultar em uma Página" Então deverá trazer os dados da "matriz" vindos da receita federal E deverá trazer os dados da "filial" vindos da receita federal
sábado, 9 de julho de 2011
![Page 52: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/52.jpg)
Steakfeature "Articles", %q{ In order to have an awesome blog As an author I want to create and manage articles} do scenario "Article index" do Article.create!(:title => 'One') Article.create!(:title => 'Two') visit article_index page.should have_content('One') page.should have_content('Two') endend
sábado, 9 de julho de 2011
![Page 53: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/53.jpg)
Benchmark
class Integer def simple_prime? (2..Math.sqrt(self).floor).all? {|i| (self % i).nonzero? } endend
sábado, 9 de julho de 2011
![Page 54: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/54.jpg)
Benchmarkrequire "benchmark"Benchmark.benchmark do |bench| bench.report("Simple Prime") do (2..10_000).each { |i| i.simple_prime? } end bench.report('Stdlib') do (2..10_000).each { |i| i.prime? } endend
sábado, 9 de julho de 2011
![Page 55: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/55.jpg)
Benchmark
CPU Time SysCpu User+Sys ElapsedTimeSimple Prime 0.130000 0.000000 0.130000 ( 0.133931)Stdlib 0.230000 0.000000 0.230000 ( 0.230975)
sábado, 9 de julho de 2011
![Page 56: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/56.jpg)
Profilerrequire 'profile'(2..10_000).each { |i| i.simple_prime? }
sábado, 9 de julho de 2011
![Page 57: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/57.jpg)
Benchmark e Profilerclass Integer def fast_prime? return true if self.equal?(2) return false if self.even? 3.step(Math.sqrt(self).floor, 2).all? { |i| (self % i).nonzero? } endend
CPU Time SysCpu User+Sys ElapsedTimeSimple Prime 0.130000 0.000000 0.130000 ( 0.133931)Fast Prime 0.070000 0.000000 0.070000 ( 0.079083)Stdlib 0.230000 0.000000 0.230000 ( 0.230975)
sábado, 9 de julho de 2011
![Page 58: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/58.jpg)
Benchmark e Profilerrequire 'profile'(2..10_000).each { |i| i.fast_prime? }
sábado, 9 de julho de 2011
![Page 59: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/59.jpg)
Extendendo Ruby com C
1) Ruby Inline2) Normal
sábado, 9 de julho de 2011
![Page 60: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/60.jpg)
Ruby Inlineclass Factorial inline do |builder| builder.c " long factorial_c(int max) { int i=max, result=1; while (i >= 2) { result *= i--; } return result; }" endend
sábado, 9 de julho de 2011
![Page 61: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/61.jpg)
Extensão Nativa
require 'mkmf'dir_config('hello_world')create_makefile('hello_world')
#ext/extconf.rb
sábado, 9 de julho de 2011
![Page 62: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/62.jpg)
Extensão Nativa/* hello_world.c */#include <ruby.h>VALUE hello_world(VALUE self){ return rb_str_new2("Hello World!");}VALUE class_Hello;void Init_hello_world(){ class_Hello = rb_define_class("HelloWorld", rb_cObject); rb_define_method(class_Hello, "hello_world", hello_world, 0);}
# In Rubyhello = HelloWorld.newhello.hello_world # => “Hello World!”
sábado, 9 de julho de 2011
![Page 63: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/63.jpg)
AutomatizandoInfinityTest (To Infinity and beyond)
sábado, 9 de julho de 2011
![Page 64: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/64.jpg)
InfinityTest$ infinity_test --rspec
sábado, 9 de julho de 2011
![Page 65: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/65.jpg)
InfinityTest$ infinity_test --rspec
sábado, 9 de julho de 2011
![Page 66: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/66.jpg)
InfinityTest$ infinity_test --rspec
sábado, 9 de julho de 2011
![Page 67: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/67.jpg)
Ruby!
sábado, 9 de julho de 2011
![Page 68: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/68.jpg)
“Não Entendi nada!!”
sábado, 9 de julho de 2011
![Page 69: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/69.jpg)
RubyCasts
sábado, 9 de julho de 2011
![Page 70: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/70.jpg)
Pra acabar
sábado, 9 de julho de 2011
![Page 71: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/71.jpg)
Você precisa se importar pelo código.
sábado, 9 de julho de 2011
![Page 72: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/72.jpg)
Ame-o
sábado, 9 de julho de 2011
![Page 73: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/73.jpg)
Ou o odeie
sábado, 9 de julho de 2011
![Page 74: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/74.jpg)
Se você amar seu código:
sábado, 9 de julho de 2011
![Page 75: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/75.jpg)
Cuide!
sábado, 9 de julho de 2011
![Page 76: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/76.jpg)
Faça o crescer
sábado, 9 de julho de 2011
![Page 77: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/77.jpg)
Se você o odiar:
sábado, 9 de julho de 2011
![Page 78: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/78.jpg)
Reescreva-o no seu tempo devido e da
forma correta.
sábado, 9 de julho de 2011
![Page 79: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/79.jpg)
Seja apaixonado pelo que está trabalhando.
sábado, 9 de julho de 2011
![Page 80: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/80.jpg)
Caso contrário você está morto por dentro.
sábado, 9 de julho de 2011
![Page 81: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/81.jpg)
Assim como seu código.
sábado, 9 de julho de 2011
![Page 82: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/82.jpg)
Mas não esqueça antes de tudo:
sábado, 9 de julho de 2011
![Page 83: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/83.jpg)
Se divirta!
sábado, 9 de julho de 2011
![Page 84: Fun driven development com Ruby](https://reader034.vdocuments.net/reader034/viewer/2022051817/54938594ac7959042e8b48d5/html5/thumbnails/84.jpg)
Obrigado! ;)
@tomas_stefanohttps://github.com/tomas-stefano
http://rubycasts.com.br/
sábado, 9 de julho de 2011