Upgrade to Pro — share decks privately, control downloads, hide ads and more …

O que não .gitignorar na sua app Rails

O que não .gitignorar na sua app Rails

Meu nome é Ulisses e trabalho na Plataformatec como desenvolvedor de software. Plataformatec é uma consultoria, lá temos contato com vários clientes.Uma das coisas que teve debate ultimamente, é o que as pessoas têm colocado no arquivo de .gitignore. Percebemos para alguns arquivos existem alternativas e para outros vale a pena o preço mante-los no controle de versão.

50e713934ed341675bf1fa73127ec260?s=128

Ulisses Almeida

March 25, 2015
Tweet

Transcript

  1. O que não .gitignorar na sua app Rails

  2. @ulissesalmeida Plataformatec

  3. Consultoria Pessoas, projetos, contextos diferentes... Muita coisa boa, muitos debates.

  4. .gitignore +config/secrets.yml +config/database.yml +db/structure.sql

  5. config/secrets.yml

  6. secrets.yml # Make sure the secrets in this file are

    kept private # if you're sharing your code publicly. development: secret_key_base: 1a1fd4fc0512b46ea449d07 test: secret_key_base: 1ffde16fcf1e55737cd8a60 # Do not keep production secrets in the repository, # instead read values from the environment. production: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  7. Make sure the secrets in this file are kept private

    if you're sharing your code publicly.
  8. Complicações • Setup mais complexo • Difícil de controlar as

    variaveis • Workaround config/secrets.yml.sample
  9. Recomendado # config/secrets.yml # Do not keep production secrets in

    the repository, # instead read values from the environment. production: secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  10. Variáveis de ambiente Pode ser usado no database.yml e etc.

  11. dotenv https://github.com/bkeepers/ dotenv

  12. git-crypt https://github.com/AGWA/git- crypt

  13. .gitignore -config/secrets.yml -config/database.yml db/structure.sql

  14. db/structure.sql

  15. structure.sql vs schema.rb

  16. structure.sql • O git diff é difícil de revisar •

    Conflitos difíceis de resolver
  17. Complicações • Você não tem a representação do banco de

    dados atual • Precisa sempre executar sempre todas migrations • O número de arquivos na pasta de migrations cresce muito rápido. • Isso é lento :(
  18. Complicações • Precisa manter manualmente todas suas migrations • A

    pasta tende a ficar com muitos arquivos antigos • Migrations muito antigas tendem a quebrar ou não fazerem mais sentido • Remoção/Adição de tabelas, colunas e models por exemplo • O rake db:setup perde sua importância.
  19. Na maioria dos casos • Sua aplicação em produção só

    precisa das migrations novas • Um database novo só precisa do rake db:setup
  20. rake db:setup rake db:create # Cria o banco de dados

    rake db:structure:load # Carrega a estrutura do structure.sql rake db:seed # Carrega os dados
  21. rake db:structure:load • Permite carregar a estrutura atual do banco

    de dados. • Não há necessidade executar todas migrations • Bem mais rápido!
  22. Pode apagar migrations? Sim! (Mas faça com muito ❤ e

    atenção)
  23. structure.sql • O git diff é difícil de revisar •

    ¯\_()_/¯ • Conflitos difíceis de resolver • Melhor ter esses conflitos em desenvolvimento do que em produção
  24. .gitignore -config/secrets.yml -config/database.yml -db/structure.sql

  25. Obrigado! @ulissesalmeida Plataformatec