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

1,802 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,802
On SlideShare
0
From Embeds
0
Number of Embeds
748
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • 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

    ×