Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Desenvolvimento Ágil com Ruby on
        Rails na GoNow
             Rafael Rosa
           Ricardo Almeida
Quem Somos?
            Rafael Rosa          Ricardo Almeida
14 anos na área           Atua na área desde 2002. Atualmente...
Quem Somos?
            Rafael Rosa          Ricardo Almeida
14 anos na área           Atua na área desde 2002. Atualmente...
Vamos Experimentar!
               Try Ruby
    http://tryruby.sophrinix.com/
O Que é Ruby

• Desde 1995
• Simples, poderosa e expressiva
• Orientada a Objetos
• Dinâmica e fortemente tipada
Por que Ruby?
O que é Ruby on Rails?

• Framework web
• Criado em 2004
• David Heinemeier Hanson
• Vulgo: DHH
O que é Ruby on Rails?

• Framework web
• Criado em 2004
• David Heinemeier Hanson
• Vulgo: DHH
• Ele tinha 21 anos
O que é Ruby on Rails?
• MVC (Model View Controller)
O que é Ruby on Rails?
• Convention over configuration
 • Pronta para ser usada (full stack)
 • Estrutura
 • ORM - ActiveRe...
O que é Agilidade
O que é Agilidade
Scrum
Por que Rails?
• Produtividade
 • E no início havia o Java...
   • XML
   • Complexo
 • Práticas ágeis
 • Mais resultado e...
Por que Rails?
• Código de boa qualidade
 • Boa cobertura de Testes
 • Flexibilidade
 • Fácil manutenção
 • DRY
 • Pensado...
Exemplos Reais
• Social
• Goin-ads
Como fazemos? Testes
Rspec
describe Account do
  context "transfering money" do
    it "deposits transfer amount to the other account" do
     ...
Cucumber
Funcionalidade: Adição
  Para evitar erros bobos
  Como um péssimo matemático
  Eu quero saber como somar dois nú...
Cucumber
Funcionalidade: Cadastrar Business Owner
  Como product owner
  Desejo que os donos de cada negócio se cadastrem
...
Remarkable
describe Advertise do
  should_belong_to :business_owner
  should_validate_presence_of :business_owner
  should...
Como Fazemos?
• Ferramentas
 • Kanban
 • Pivotal
 • Git - Versionamento de Código
 • Continuous Integration (Signal)
 • Ho...
Como? InheritedResources
   class PerfisController < ApplicationController
     def index
       @perfis = Perfil.all

   ...
Como? InheritedResources

class PerfisController < InheritedResources::Base
  respond_to :html, :xml
end
Como?


• HTML => HAML
• CSS => LESS
Resultado



• Cobertura de Testes
• Duplicação
• Complexidade
Resultado
•   ROI - Return Over Investment
    •   Entregar antes
    •   Entregar o que importa
Resultado

• Reviews
 • Melhoria Contínua
 • Comunicação
Resultado

• Retrospectiva
 • Inspecionar e Adaptar
 • Aprender
 • Motivação
 • Linha do Tempo
Resultado
• Documentação
 • Viva
 • Útil
 • Atualizada
 • Executável
• Cucumber
Serve para mim?
Serve para mim?
Serve para mim?
• Programação poliglota
 • Melhora habilidades em todas
• Integração com o mundo corporativo
Serve para mim?
• Programação poliglota
 • Melhora habilidades em todas
• Integração com o mundo corporativo
E agora?
•   Fácil de aprender
•   Comunidade
    •   Rails Guides
    •   Github
    •   Ruby Inside Brasil
    •   Ruby ...
E agora?
•   Fácil de aprender
•   Comunidade
    •   Rails Guides
    •   Github
    •   Ruby Inside Brasil
    •   Ruby ...
E agora?
•   Fácil de aprender
•   Comunidade
    •   Rails Guides
    •   Github
    •   Ruby Inside Brasil
    •   Ruby ...
E agora?
•   Fácil de aprender
•   Comunidade
    •   Rails Guides
    •   Github
    •   Ruby Inside Brasil
    •   Ruby ...
E agora?
•   Fácil de aprender
•   Comunidade
    •   Rails Guides
    •   Github
    •   Ruby Inside Brasil
    •   Ruby ...
Obrigado!
• http://www.gonow.com.br/treinamentos
• http://manifestonaweb.wordpress.com
• @almeidaricardo
• @rafaelrosafu
•...
Palestra Fatec
Palestra Fatec
Palestra Fatec
Palestra Fatec
Palestra Fatec
Palestra Fatec
Palestra Fatec
Palestra Fatec
Palestra Fatec
Palestra Fatec
Upcoming SlideShare
Loading in …5
×

Palestra Fatec

2,039 views

Published on

  • Be the first to comment

  • Be the first to like this

Palestra Fatec

  1. 1. Desenvolvimento Ágil com Ruby on Rails na GoNow Rafael Rosa Ricardo Almeida
  2. 2. Quem Somos? Rafael Rosa Ricardo Almeida 14 anos na área Atua na área desde 2002. Atualmente trabalha Ruby Inside Brasil com projetos em Ruby on Rails. Escreve para os Guru-SP blogs manifestonaweb.wordpress.com e visaoagil.wordpress.com. Trabalha como editor técnico do Infoq Brasil. Escreve para a revista técnica Java Magazine.
  3. 3. Quem Somos? Rafael Rosa Ricardo Almeida 14 anos na área Atua na área desde 2002. Atualmente trabalha Ruby Inside Brasil com projetos em Ruby on Rails. Escreve para os Guru-SP blogs manifestonaweb.wordpress.com e visaoagil.wordpress.com. Trabalha como editor técnico do Infoq Brasil. Escreve para a revista técnica Java Magazine.
  4. 4. Vamos Experimentar! Try Ruby http://tryruby.sophrinix.com/
  5. 5. O Que é Ruby • Desde 1995 • Simples, poderosa e expressiva • Orientada a Objetos • Dinâmica e fortemente tipada
  6. 6. Por que Ruby?
  7. 7. O que é Ruby on Rails? • Framework web • Criado em 2004 • David Heinemeier Hanson • Vulgo: DHH
  8. 8. O que é Ruby on Rails? • Framework web • Criado em 2004 • David Heinemeier Hanson • Vulgo: DHH • Ele tinha 21 anos
  9. 9. O que é Ruby on Rails? • MVC (Model View Controller)
  10. 10. O que é Ruby on Rails? • Convention over configuration • Pronta para ser usada (full stack) • Estrutura • ORM - ActiveRecord • Javascript - Prototype
  11. 11. O que é Agilidade
  12. 12. O que é Agilidade
  13. 13. Scrum
  14. 14. Por que Rails? • Produtividade • E no início havia o Java... • XML • Complexo • Práticas ágeis • Mais resultado em menos tempo
  15. 15. Por que Rails? • Código de boa qualidade • Boa cobertura de Testes • Flexibilidade • Fácil manutenção • DRY • Pensado para a web
  16. 16. Exemplos Reais • Social • Goin-ads
  17. 17. Como fazemos? Testes
  18. 18. Rspec describe Account do context "transfering money" do it "deposits transfer amount to the other account" do source = Account.new(50, :USD) target = mock('target account') target.should_receive(:deposit).with(Money.new(5, :USD)) source.transfer(5, :USD).to(target) end it "reduces its balance by the transfer amount" do source = Account.new(50, :USD) target = stub('target account') source.transfer(5, :USD).to(target) source.balance.should == Money.new(45, :USD) end end end
  19. 19. Cucumber Funcionalidade: Adição   Para evitar erros bobos   Como um péssimo matemático   Eu quero saber como somar dois números     Cenário: Adicionar dois números     Dado que eu digitei 50 na calculadora     E que eu digitei 70 na calculadora     Quando eu aperto o botão de soma     Então o resultado na calculadora deve ser 120
  20. 20. Cucumber Funcionalidade: Cadastrar Business Owner   Como product owner   Desejo que os donos de cada negócio se cadastrem   De modo que consiga segmentar seus dados     Cenário: Padrão     Dado que estou na página de cadastro     Quando preencher o email com labs@gonow.com.br     E clicar Enviar     Então devo ver a mensagem "Bem vindo ao Goin-Ads" E devo ver o token na tela E devo ver o email na tela
  21. 21. Remarkable describe Advertise do   should_belong_to :business_owner   should_validate_presence_of :business_owner   should_have_one :local   should_have_many :dynamic_attributes,                    :dependent => :destroy end
  22. 22. Como Fazemos? • Ferramentas • Kanban • Pivotal • Git - Versionamento de Código • Continuous Integration (Signal) • Hoptoad • New Relic
  23. 23. Como? InheritedResources class PerfisController < ApplicationController   def index     @perfis = Perfil.all     respond_to do |format|       format.html # index.html.erb       format.xml  { render :xml => @perfis }     end   end   def show     @perfil = Perfil.find(params[:id])     respond_to do |format|       format.html # show.html.erb       format.xml  { render :xml => @perfil }     end   end   def new     @perfil = Perfil.new     respond_to do |format|       format.html # new.html.erb       format.xml  { render :xml => @perfil }     end   end     def edit     @perfil = Perfil.find(params[:id])   end   .......
  24. 24. Como? InheritedResources class PerfisController < InheritedResources::Base respond_to :html, :xml end
  25. 25. Como? • HTML => HAML • CSS => LESS
  26. 26. Resultado • Cobertura de Testes • Duplicação • Complexidade
  27. 27. Resultado • ROI - Return Over Investment • Entregar antes • Entregar o que importa
  28. 28. Resultado • Reviews • Melhoria Contínua • Comunicação
  29. 29. Resultado • Retrospectiva • Inspecionar e Adaptar • Aprender • Motivação • Linha do Tempo
  30. 30. Resultado • Documentação • Viva • Útil • Atualizada • Executável • Cucumber
  31. 31. Serve para mim?
  32. 32. Serve para mim?
  33. 33. Serve para mim? • Programação poliglota • Melhora habilidades em todas • Integração com o mundo corporativo
  34. 34. Serve para mim? • Programação poliglota • Melhora habilidades em todas • Integração com o mundo corporativo
  35. 35. E agora? • Fácil de aprender • Comunidade • Rails Guides • Github • Ruby Inside Brasil • Ruby Onda • Guru-SP • Listas e fóruns • Vídeos e Screencasts
  36. 36. E agora? • Fácil de aprender • Comunidade • Rails Guides • Github • Ruby Inside Brasil • Ruby Onda • Guru-SP • Listas e fóruns • Vídeos e Screencasts
  37. 37. E agora? • Fácil de aprender • Comunidade • Rails Guides • Github • Ruby Inside Brasil • Ruby Onda • Guru-SP • Listas e fóruns • Vídeos e Screencasts
  38. 38. E agora? • Fácil de aprender • Comunidade • Rails Guides • Github • Ruby Inside Brasil • Ruby Onda • Guru-SP • Listas e fóruns • Vídeos e Screencasts
  39. 39. E agora? • Fácil de aprender • Comunidade • Rails Guides • Github • Ruby Inside Brasil • Ruby Onda • Guru-SP • Listas e fóruns • Vídeos e Screencasts
  40. 40. Obrigado! • http://www.gonow.com.br/treinamentos • http://manifestonaweb.wordpress.com • @almeidaricardo • @rafaelrosafu • ricardoluiz1.almeida@gmail.com • rafaelrosafu@gmail.com

×