Envolva suas migrações pelo rastreador de exceções.

Digamos que você esteja escrevendo a migração para alterar os dados no banco de dados, como as atribuições do novo valor ao campo.

Em primeiro lugar, seria ótimo usar o save! ou update_attributes! métodos para levantar exceções no caso das validações. Adicione o bloco de resgate para essas declarações e escreva algo assim:

def self.up
YourModel.all.each do |model|
begin
model
.update_attributes!(field: 'new-value')
rescue => boom
Honeybadger.notify(
:error_class => 'MigrationName',
:error_message => boom.message,
:parameters => {
model
: { id: model.to_param }
}
)
end
end
end

Provavelmente não é uma boa abordagem para fazer as coisas acontecerem, como terminar a migração no caso de registros inválidos, mas posso ver no honeybadger que tipo de registros preciso alterar ou receber atenção. Posso criar o cartão Trello para corrigi-lo, fornecendo o url para o rastreador honeybadger em vez de descrever o problema.