Porque você deveria considerar Ruby on Rails para seu próximo projeto ?



                          anderson leite
anderson leite
anderson.leite@caelum.com.br
  www.andersonleite.com.br
      @anderson_leite
Porque você deveria   CONSIDERAR ...




      para seu próximo projeto ?
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
"Precisamos de algumas
idéias malucas, vejam só para
   onde as idéias normais nos
                    levaram."

        ...
Vamos começar
tomando algumas
decisões erradas.
Dick Fosbury
Dick Fosbury
Agile web development with Rails
Mas...Ruby on Rails faz
#{qualquer_coisa_mirabolante_aqui} ?
Mas...Ruby on Rails faz
#{qualquer_coisa_mirabolante_aqui} ?

            NÃO ?! HA!
Mas...Ruby on Rails faz
#{qualquer_coisa_mirabolante_aqui} ?

             NÃO ?! HA!

   “Tornar as coisas simples ...fác...
class Carro

end
class Carro

end
class Carro   carro = Carro.new
              carro.turbo
end           NoMethodError: undefined method ‘turbo’
class Carro              carro = Carro.new
                         carro.turbo
end                      NoMethodError: un...
class Carro              carro = Carro.new
                         carro.turbo
end                      NoMethodError: un...
class Carro              carro = Carro.new
                         carro.turbo
end                      NoMethodError: un...
Metaprogramação

class Carro              carro = Carro.new
                         carro.turbo
end                      ...
class Carro

end
class Carro

end
class Carro
class Carro     def method_missing(name, *args)
                  puts “Método #{name} .. ?”
end             e...
class Carro
class Carro           def method_missing(name, *args)
                        puts “Método #{name} .. ?”
end  ...
class Carro
class Carro           def method_missing(name, *args)
                        puts “Método #{name} .. ?”
end  ...
class Carro
class Carro           def method_missing(name, *args)
                        puts “Método #{name} .. ?”
end  ...
Method Missing

                    class Carro
class Carro           def method_missing(name, *args)
                    ...
Metaprogramação
       +
 Method Missing
       =
Metaprogramação
          +
    Method Missing
          =
class Carro < ActiveRecord::Base
end
Metaprogramação
          +
    Method Missing
          =
class Carro < ActiveRecord::Base
end
carro = Carro.new
carro.fin...
Metaprogramação
          +
    Method Missing
          =
class Carro < ActiveRecord::Base
end
carro = Carro.new
carro.fin...
Metaprogramação
           +
     Method Missing
           =
class Carro < ActiveRecord::Base
end
carro = Carro.new
carro...
Documentação...
Documentação...
Documentação...
Cucumber
Live coding
TDD / BDD
TDD / BDD
Funcionalidade: Controle de venda de carros
  Para administrar minha loja e obter mais
  lucro quero controlar a...
TDD / BDD
Funcionalidade: Controle de venda de carros
  Para administrar minha loja e obter mais
  lucro quero controlar a...
TDD / BDD
Funcionalidade: Controle de venda de carros
  Para administrar minha loja e obter mais
  lucro quero controlar a...
TDD / BDD
Funcionalidade: Controle de venda de carros
  Para administrar minha loja e obter mais
  lucro quero controlar a...
TDD / BDD
Funcionalidade: Controle de venda de carros
  Para administrar minha loja e obter mais
  lucro quero controlar a...
TDD / BDD
Funcionalidade: Controle de venda de carros
  Para administrar minha loja e obter mais
  lucro quero controlar a...
TDD / BDD
Funcionalidade: Controle de venda de carros
  Para administrar minha loja e obter mais
  lucro quero controlar a...
TDD / BDD
Funcionalidade: Controle de venda de carros
  Para administrar minha loja e obter mais
  lucro quero controlar a...
http://vraptor.caelum.com.br/
usem C# e .NEt
   obrigado!
anderson.leite@caelum.com.br
  www.andersonleite.com.br
      @anderson_leite
Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?
Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?
Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?
Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?
Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?
Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?
Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?
Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?
Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?
Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?
Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?
Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?
Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?
Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?
Upcoming SlideShare
Loading in …5
×

Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?

1,031 views
982 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,031
On SlideShare
0
From Embeds
0
Number of Embeds
19
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Pensando ao contrário - Por que você deveria considerar Rails no seu próximo projeto?

  1. 1. Porque você deveria considerar Ruby on Rails para seu próximo projeto ? anderson leite
  2. 2. anderson leite anderson.leite@caelum.com.br www.andersonleite.com.br @anderson_leite
  3. 3. Porque você deveria CONSIDERAR ... para seu próximo projeto ?
  4. 4. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
  5. 5. http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
  6. 6. "Precisamos de algumas idéias malucas, vejam só para onde as idéias normais nos levaram." -- George Bernard Shaw
  7. 7. Vamos começar tomando algumas decisões erradas.
  8. 8. Dick Fosbury
  9. 9. Dick Fosbury
  10. 10. Agile web development with Rails
  11. 11. Mas...Ruby on Rails faz #{qualquer_coisa_mirabolante_aqui} ?
  12. 12. Mas...Ruby on Rails faz #{qualquer_coisa_mirabolante_aqui} ? NÃO ?! HA!
  13. 13. Mas...Ruby on Rails faz #{qualquer_coisa_mirabolante_aqui} ? NÃO ?! HA! “Tornar as coisas simples ...fáceis e as coisas complexas ...possíveis”
  14. 14. class Carro end
  15. 15. class Carro end
  16. 16. class Carro carro = Carro.new carro.turbo end NoMethodError: undefined method ‘turbo’
  17. 17. class Carro carro = Carro.new carro.turbo end NoMethodError: undefined method ‘turbo’ class Oficina def turbina(carro) def carro.turbo puts ‘turbinado!’ end end end
  18. 18. class Carro carro = Carro.new carro.turbo end NoMethodError: undefined method ‘turbo’ class Oficina def turbina(carro) def carro.turbo puts ‘turbinado!’ end end end
  19. 19. class Carro carro = Carro.new carro.turbo end NoMethodError: undefined method ‘turbo’ class Oficina carro = Carro.new def turbina(carro) oficina = Oficina.new def carro.turbo oficina.turbina(carro) puts ‘turbinado!’ end carro.turbo end # turbinado! end
  20. 20. Metaprogramação class Carro carro = Carro.new carro.turbo end NoMethodError: undefined method ‘turbo’ class Oficina carro = Carro.new def turbina(carro) oficina = Oficina.new def carro.turbo oficina.turbina(carro) puts ‘turbinado!’ end carro.turbo end # turbinado! end
  21. 21. class Carro end
  22. 22. class Carro end
  23. 23. class Carro class Carro def method_missing(name, *args) puts “Método #{name} .. ?” end end end
  24. 24. class Carro class Carro def method_missing(name, *args) puts “Método #{name} .. ?” end end end carro = Carro.new carro.acelera
  25. 25. class Carro class Carro def method_missing(name, *args) puts “Método #{name} .. ?” end end end carro = Carro.new carro.acelera
  26. 26. class Carro class Carro def method_missing(name, *args) puts “Método #{name} .. ?” end end end carro = Carro.new carro.acelera # Método acelera .. ?
  27. 27. Method Missing class Carro class Carro def method_missing(name, *args) puts “Método #{name} .. ?” end end end carro = Carro.new carro.acelera # Método acelera .. ?
  28. 28. Metaprogramação + Method Missing =
  29. 29. Metaprogramação + Method Missing = class Carro < ActiveRecord::Base end
  30. 30. Metaprogramação + Method Missing = class Carro < ActiveRecord::Base end carro = Carro.new carro.find(2)
  31. 31. Metaprogramação + Method Missing = class Carro < ActiveRecord::Base end carro = Carro.new carro.find(2) carro.find_by_name(‘monza’)
  32. 32. Metaprogramação + Method Missing = class Carro < ActiveRecord::Base end carro = Carro.new carro.find(2) carro.find_by_name(‘monza’) carro.find_by_name_and_year(‘monza’,1990) carros = Carro.all
  33. 33. Documentação...
  34. 34. Documentação...
  35. 35. Documentação...
  36. 36. Cucumber Live coding
  37. 37. TDD / BDD
  38. 38. TDD / BDD Funcionalidade: Controle de venda de carros Para administrar minha loja e obter mais lucro quero controlar a entrada e saída de automóveis.
  39. 39. TDD / BDD Funcionalidade: Controle de venda de carros Para administrar minha loja e obter mais lucro quero controlar a entrada e saída de automóveis. Cenário: Cadastro de carros
  40. 40. TDD / BDD Funcionalidade: Controle de venda de carros Para administrar minha loja e obter mais lucro quero controlar a entrada e saída de automóveis. Cenário: Cadastro de carros Dado que estou na página inicial do sistema
  41. 41. TDD / BDD Funcionalidade: Controle de venda de carros Para administrar minha loja e obter mais lucro quero controlar a entrada e saída de automóveis. Cenário: Cadastro de carros Dado que estou na página inicial do sistema E clico no link “Adicionar novo carro”
  42. 42. TDD / BDD Funcionalidade: Controle de venda de carros Para administrar minha loja e obter mais lucro quero controlar a entrada e saída de automóveis. Cenário: Cadastro de carros Dado que estou na página inicial do sistema E clico no link “Adicionar novo carro” E preencho os campos do formulário
  43. 43. TDD / BDD Funcionalidade: Controle de venda de carros Para administrar minha loja e obter mais lucro quero controlar a entrada e saída de automóveis. Cenário: Cadastro de carros Dado que estou na página inicial do sistema E clico no link “Adicionar novo carro” E preencho os campos do formulário Então o novo carro deve aparecer na home
  44. 44. TDD / BDD Funcionalidade: Controle de venda de carros Para administrar minha loja e obter mais lucro quero controlar a entrada e saída de automóveis. Cenário: Cadastro de carros Dado que estou na página inicial do sistema E clico no link “Adicionar novo carro” E preencho os campos do formulário Então o novo carro deve aparecer na home
  45. 45. TDD / BDD Funcionalidade: Controle de venda de carros Para administrar minha loja e obter mais lucro quero controlar a entrada e saída de automóveis. Cenário: Cadastro de carros Dado que estou na página inicial do sistema E clico no link “Adicionar novo carro” E preencho os campos do formulário Então o novo carro deve aparecer na home
  46. 46. http://vraptor.caelum.com.br/
  47. 47. usem C# e .NEt obrigado! anderson.leite@caelum.com.br www.andersonleite.com.br @anderson_leite

×