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.

Referências

Documentação da Gem strong_migrations

0 Comentário