o que não .gitignorar na sua app rails, com ulisses almeida

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

Upload: imasters

Post on 19-Jul-2015

89 views

Category:

Technology


0 download

TRANSCRIPT

O que não.gitignorar na sua app Rails

@ulissesalmeidaPlataformatec

ConsultoriaPessoas, projetos,

contextos diferentes...Muita coisa boa,

muitos debates.

.gitignore

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

config/secrets.yml

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"] %>

Make sure the secrets in this file are kept

private if you're sharing your

code publicly.

Complicações• Setup mais complexo

• Difícil de controlar as variaveis

• Workaround config/secrets.yml.sample

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"] %>

Variáveis de ambiente

Pode ser usado no database.yml e etc.

dotenvhttps://github.com/bkeepers/dotenv

git-crypthttps://github.com/

AGWA/git-crypt

.gitignore

-config/secrets.yml-config/database.ymldb/structure.sql

db/structure.sql

structure.sql vs schema.rb

structure.sql

• O git diff é difícil de revisar

• Conflitos difíceis de resolver

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 :(

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.

Na maioria dos casos• Sua aplicação em produção só precisa das

migrations novas

• Um database novo só precisa do rake db:setup

rake db:setup

rake db:create # Cria o banco de dadosrake db:structure:load # Carrega a estrutura do structure.sqlrake db:seed # Carrega os dados

rake db:structure:load

• Permite carregar a estrutura atual do banco de dados.

• Não há necessidade executar todas migrations

• Bem mais rápido!

Pode apagar migrations?

Sim!(Mas faça com muito ❤ e atenção)

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

.gitignore

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

Obrigado!@ulissesalmeida

Plataformatec