SlideShare una empresa de Scribd logo
1 de 38
7
coisas que todo
 desenvolvedor
 Ruby on Rails
  deveria fazer
Fernando Hamasaki
     @Prodis
7
coisas que todo
 desenvolvedor
 Ruby on Rails
  deveria fazer
1
Atualizações transacionais
   no banco de dados
update_attribute
      é o câncer das
atualizações transacionais


  Atualizações transacionais no banco de dados
Atualizações transacionais no banco de dados
Atualizações transacionais no banco de dados
2
 Trazer todos os dados
   necessários de uma
listagem (eager loading)
Trazer todos os dados necessários de uma listagem
Trazer todos os dados necessários de uma listagem
Trazer todos os dados necessários de uma listagem
Trazer todos os dados necessários de uma listagem
3
Não colocar tudo no
 model (fat is ugly)
Modelos deveriam ser
responsáveis somente por
  manipulação de dados


      Não colocar tudo no model
Não colocar tudo no model
Não colocar tudo no model
Não colocar tudo no model
Não colocar tudo no model
Não colocar tudo no model
4
  Cuidado ao incluir
módulos em controllers
     (filters hell)
Esses módulos podem
 possuir filtros que criam
complexidade e dificultam
      a manutenção

   Cuidado ao incluir módulos em controllers
Cuidado ao incluir módulos em controllers
Cuidado ao incluir módulos em controllers
5
Logar chamadas de
 serviços externos
Serviços externos podem
  ter comportamentos
       inesperados


    Logar chamadas de serviços externos
O que logar?
- URL (com parâmetros)
- HTTP method
- Body


      Logar chamadas de serviços externos
Correios-Frete Request:
GET http://ws.correios.com.br/calculador/CalcPrecoPrazo.aspx?
sCepOrigem=05707001&sCepDestino=05707001&nVlPeso=0.099&nVlCom
primento=36,0&nVlLargura=43,0&nVlAltura=5,0&nVlDiametro=0,0&n
CdFormato=1&sCdMaoPropria=N&sCdAvisoRecebimento=N&nVlValorDec
larado=0,00&nCdServico=40010&nCdEmpresa=&sDsSenha=&StrRetorno
=xml

Correios-Frete Response:
HTTP/1.1 200 OK
<?xml version="1.0" encoding="ISO-8859-1" ?>
<Servicos><cServico><Codigo>40010</Codigo><Valor>12,40</
Valor><PrazoEntrega>1</PrazoEntrega><ValorMaoPropria>0,00</
ValorMaoPropria><ValorAvisoRecebimento>0,00</
ValorAvisoRecebimento><ValorValorDeclarado>0,00</
ValorValorDeclarado><EntregaDomiciliar>S</
EntregaDomiciliar><EntregaSabado>S</EntregaSabado><Erro>0</
Erro><MsgErro></MsgErro></cServico></Servicos>



            Logar chamadas de serviços externos
Logar chamadas de serviços externos
6
   Fazer migrações em
  etapas quando houver
riscos de perda de dados
Fazer migrações em etapas
Fazer migrações em etapas
Fazer migrações em etapas
Fazer migrações em etapas
7
Compartilhar suas
  experiências
Idéias
    Soluções
   Problemas
    Macetes
     Dicas

Compartilhe suas experiências
Perguntas?
 Acho que não dá tempo
Vai, Corinthians!
Fernando Hamasaki
     @Prodis

Más contenido relacionado

Similar a 7 coisas que todo desenvolvedor Ruby on Rails deveria fazer

Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaJosé Roberto Araújo
 
Katálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial VKatálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial VKatálysis Científica
 
Introdução aos Testes de Desempenho
Introdução aos Testes de DesempenhoIntrodução aos Testes de Desempenho
Introdução aos Testes de DesempenhoBase2 Tecnologia
 
Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0Comunidade NetPonto
 
Migrations com Entity Framework Core
Migrations com Entity Framework CoreMigrations com Entity Framework Core
Migrations com Entity Framework CoreCaio Lorensetti
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Frameworkelliando dias
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpRodrigo Aramburu
 
Introducao oracle-sqlplsql-vol2-pt
Introducao oracle-sqlplsql-vol2-ptIntroducao oracle-sqlplsql-vol2-pt
Introducao oracle-sqlplsql-vol2-ptValdinho Pereira
 
Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Maurício Linhares
 
Extreme 360 Arquitetura para Aplicações Delphi Spring4D - OOP e RAD
Extreme 360 Arquitetura para Aplicações Delphi Spring4D - OOP e RADExtreme 360 Arquitetura para Aplicações Delphi Spring4D - OOP e RAD
Extreme 360 Arquitetura para Aplicações Delphi Spring4D - OOP e RADCesar Romero
 
Clean architecture frontend
Clean architecture frontendClean architecture frontend
Clean architecture frontendEvelise Vazquez
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmGuilherme Blanco
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 

Similar a 7 coisas que todo desenvolvedor Ruby on Rails deveria fazer (20)

DB2 Express-C
DB2 Express-CDB2 Express-C
DB2 Express-C
 
Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejista
 
Katálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial VKatálysis - Webshow - Automação Laboratorial V
Katálysis - Webshow - Automação Laboratorial V
 
Asp.net
Asp.netAsp.net
Asp.net
 
Introdução aos Testes de Desempenho
Introdução aos Testes de DesempenhoIntrodução aos Testes de Desempenho
Introdução aos Testes de Desempenho
 
Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0Parallel Programming no .NET 4.0
Parallel Programming no .NET 4.0
 
Oracleplsql
OracleplsqlOracleplsql
Oracleplsql
 
Migrations com Entity Framework Core
Migrations com Entity Framework CoreMigrations com Entity Framework Core
Migrations com Entity Framework Core
 
Webinar Magento Commerce
Webinar Magento Commerce Webinar Magento Commerce
Webinar Magento Commerce
 
Workshop Magento
Workshop MagentoWorkshop Magento
Workshop Magento
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
Desenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephpDesenvolvendo aplicações web com o framework cakephp
Desenvolvendo aplicações web com o framework cakephp
 
Magento: Mitos vs Vantagens
Magento: Mitos vs VantagensMagento: Mitos vs Vantagens
Magento: Mitos vs Vantagens
 
Introducao oracle-sqlplsql-vol2-pt
Introducao oracle-sqlplsql-vol2-ptIntroducao oracle-sqlplsql-vol2-pt
Introducao oracle-sqlplsql-vol2-pt
 
Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01Curso de Ruby on Rails - Aula 01
Curso de Ruby on Rails - Aula 01
 
Extreme 360 Arquitetura para Aplicações Delphi Spring4D - OOP e RAD
Extreme 360 Arquitetura para Aplicações Delphi Spring4D - OOP e RADExtreme 360 Arquitetura para Aplicações Delphi Spring4D - OOP e RAD
Extreme 360 Arquitetura para Aplicações Delphi Spring4D - OOP e RAD
 
Monolith - An epic journey
Monolith - An epic journeyMonolith - An epic journey
Monolith - An epic journey
 
Clean architecture frontend
Clean architecture frontendClean architecture frontend
Clean architecture frontend
 
Desenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine OrmDesenvolvimento Agil Com Doctrine Orm
Desenvolvimento Agil Com Doctrine Orm
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 

Más de Fernando Hamasaki de Amorim

Os piores códigos Ruby já vistos - TDC Florianópolis 2016
Os piores códigos Ruby já vistos - TDC Florianópolis 2016Os piores códigos Ruby já vistos - TDC Florianópolis 2016
Os piores códigos Ruby já vistos - TDC Florianópolis 2016Fernando Hamasaki de Amorim
 
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015Fernando Hamasaki de Amorim
 
Locaweb + Spree: transformando código aberto em um projeto comercial
Locaweb + Spree: transformando código aberto em um projeto comercialLocaweb + Spree: transformando código aberto em um projeto comercial
Locaweb + Spree: transformando código aberto em um projeto comercialFernando Hamasaki de Amorim
 

Más de Fernando Hamasaki de Amorim (7)

Ido Keido - ElixirConf EU 2019
Ido Keido - ElixirConf EU 2019Ido Keido - ElixirConf EU 2019
Ido Keido - ElixirConf EU 2019
 
Anotações da TDC Florianópolis 2016
Anotações da TDC Florianópolis 2016Anotações da TDC Florianópolis 2016
Anotações da TDC Florianópolis 2016
 
Os piores códigos Ruby já vistos - TDC Florianópolis 2016
Os piores códigos Ruby já vistos - TDC Florianópolis 2016Os piores códigos Ruby já vistos - TDC Florianópolis 2016
Os piores códigos Ruby já vistos - TDC Florianópolis 2016
 
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
The worst Ruby codes I’ve seen in my life - RubyKaigi 2015
 
TDC 2015 - Torne-se um programador melhor
TDC 2015 - Torne-se um  programador melhorTDC 2015 - Torne-se um  programador melhor
TDC 2015 - Torne-se um programador melhor
 
Locaweb + Spree: transformando código aberto em um projeto comercial
Locaweb + Spree: transformando código aberto em um projeto comercialLocaweb + Spree: transformando código aberto em um projeto comercial
Locaweb + Spree: transformando código aberto em um projeto comercial
 
Apresentação de TDD na Fatec Jundiaí
Apresentação de TDD na Fatec JundiaíApresentação de TDD na Fatec Jundiaí
Apresentação de TDD na Fatec Jundiaí
 

7 coisas que todo desenvolvedor Ruby on Rails deveria fazer

Notas del editor

  1. \n
  2. \n
  3. \n
  4. Uso indiscrimado de save e update_attribute (e similares)\n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. Manipula&amp;#xE7;&amp;#xE3;o de arquivos, chamadas de servi&amp;#xE7;os externos, estrutura de dados (parser), envio de e-mails, etc.\n\n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. - O servi&amp;#xE7;o pode estar fora do ar\n- Os dados de retorno podem estar inconsistentes\n\n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. Segunda etapa\n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n