Previniendo errores de columnas duplicadas en migraciones

¿Alguna vez se han topado con este error al correr sus migraciones?

Duplicate column migration error…

Esto normalmente es una buena señal, ya que nos previene de tropezarnos con nuestros propios pies. Sin embargo cuando trabajamos en equipo y con múltiples branches, esto se convierte en algo relativamente habitual (… un dolor :@).

Una forma sencilla de corregir esto, es activando un bloque de captura de errores el cual enviará cualquier mensaje de error al limbo. Ojo! Usen esto solamente si saben que la migración que ejecutan ya fue ejecutada en su base de datos, de otra manera nunca se enterarán si la migración fue ejecutada con éxito.

Ejemplo:

class AddCCEmailToUsers < ActiveRecord::Migration
  def self.up
    add_column :usuarios, :email_cc, :string rescue nil
  end
end

Espero que les sea de utilidad

Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Blogplay
  • BarraPunto
  • Identi.ca

4 Responses to “Previniendo errores de columnas duplicadas en migraciones”

  1. Distriker Says:

    Bastante interesante. Lo pondré en práctica.

    Saludos y gracias.

  2. Bernardo Arancibia Says:

    Saludos Javier! aquí desde Chile nuevamente, he repasado los videos que has subido, me han servido demasiado; quería saber si está en proyecto, al menos, una próxima versión del screencast. Felicitaciones también por el maravilloso regalo que llegó a tu vida, por twitter pude conocer la noticia, me imagino que con mayor razón ahora no debes tener mucho tiempo. Aquí por lo menos estamos atentos a una próxima versión y metiendo un poco de manos en el asunto de Rails, mi idea se desarrollar un sistema de compra-venta sobre el framework, por ahora estoy en la etapa de análisis y a la vez conociendo RoR y todo lo que lo rodea.

    Espero esté todo bien por allá, sobre todo con las tragedias que han sucedido en tu país, mucha fuerza y salud a la familia!

  3. Xurde Says:

    class AddCCEmailToUsers < ActiveRecord::Migration
    def self.up
    begin
    add_column :usuarios, :email_cc, :string
    rescue
    puts "La migracion AddCCEmailToUsers ha fallado: " #Avisamos de que falla
    puts $!.to_yaml #Pintamos el pq ha fallado
    end
    end
    end

  4. xuxo Says:

    Este blog es verdaderamente bueno, pero hace tiempo que no hay entradas nuevas, que lastima.

Leave a Reply

Promoviendo el uso de Software Libre para Desarrollo Web