Introdução à Gem strong_migrations
A gem strong_migrations é uma ferramenta poderosa para desenvolvedores Ruby on Rails que auxilia na execução de migrações de banco de dados de maneira segura. Esta gem ajuda a evitar migrações perigosas que podem causar tempo de inatividade ou problemas de desempenho no banco de dados de produção. O que…
A gem strong_migrations
é uma ferramenta poderosa para desenvolvedores Ruby on Rails que auxilia na execução de migrações de banco de dados de maneira segura. Esta gem ajuda a evitar migrações perigosas que podem causar tempo de inatividade ou problemas de desempenho no banco de dados de produção.
O que é strong_migrations
?
strong_migrations
é uma gem que adiciona verificações às suas migrações, avisando sobre operações potencialmente perigosas e oferecendo alternativas seguras. Isso é especialmente útil em ambientes de produção onde a interrupção do serviço pode ter consequências significativas.
Instalação
Para instalar a gem strong_migrations
, adicione-a ao seu Gemfile:
gem 'strong_migrations'
e depois:
bundle install
rails generate strong_migrations:install
Como Funciona
Depois de instalada, strong_migrations
verifica suas migrações antes que sejam aplicadas. Se detectar uma migração que pode causar problemas, ele gera um erro e sugere uma abordagem mais segura, como por exemplo:
=== Dangerous operation detected #strong_migrations ===
Active Record caches attributes, which causes problems
when removing columns. Be sure to ignore the column:
class User < ApplicationRecord
self.ignored_columns += ["name"]
end
Deploy the code, then wrap this step in a safety_assured { ... } block.
class RemoveColumn < ActiveRecord::Migration[7.1]
def change
safety_assured { remove_column :users, :name }
end
end
Neste caso a abordagem recomendada pela gem seria:
1. Informar ao Active Record para ignorar a coluna de seu cache
2. Fazer o deploy do codigo
3. Envolver a migration em um safety_assured
4. Fazer o deploy e rodar a migration
5. Remover o codigo adicionado na primeira etapa
Na documentação encontramos alguns outros exemplos de operações potencialmente perigosas, sendo algumas delas:
– Renomear uma coluna
– Renomear uma tabela
– Alterar o tipo de uma coluna
– Executar SQL diretamente
Configuração Adicional
Você pode personalizar as verificações da gem strong_migrations
conforme necessário. Adicione um arquivo de configuração chamado strong_migrations.rb
em config/initializers
e defina suas preferências.
Exemplo de configuração:
# config/initializers/strong_migrations.rb
# Data e hora a partir da qual as verificações devem ser aplicadas
StrongMigrations.start_after = 20220101000000
# Habilita a análise automática após migrações
StrongMigrations.auto_analyze = true
Conclusão
A gem strong_migrations
é uma adição valiosa para qualquer projeto Rails, garantindo que as migrações de banco de dados sejam executadas de forma segura e eficiente. Ao utilizar essa gem, você pode evitar problemas comuns de migração e garantir que seu aplicativo permaneça estável e performático durante as atualizações de esquema.