Carlos Brando

Nome do Jogo

Edge Rails: Migrations transacionais no PostgreSQL

Quando uma migration está em execução e um erro ocorre, tudo que já foi executado será aplicado ao banco de dados, mas tudo que estiver após o erro, não será aplicado. Além disso a migration será marcada como concluída. Isto pode dar uma certa dor de cabeça para corrigir.

Mas, se o banco de dados que você estiver usando tiver suporte a DDL rollbacks em transações, então ele pode fazer uso deste recurso para desfazer tudo que foi feito antes do erro. O problema é que nem todos os bancos de dados possuem este recurso. O MySQL, por exemplo não possui.

Mas o PostgreSQL, SQL Server e outros bancos possuem.

Neste caso o código do Rails foi atualizado para permitir o uso de transações em migrations quando você estiver usando estes bancos de dados. Embora o Rails permita este recurso, o adapter do banco deve estar preparado para isto. Até o momento somente o do PostgreSQL parece estar.

Quase ia esquecendo de mencionar que este patch tem participação do meu amigo e companheiro da Surgeworks: Rodrigo Kochenburger.

Comments