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
May 15th, 2010 at 5:40 pm
Bastante interesante. Lo pondré en práctica.
Saludos y gracias.
June 9th, 2010 at 11:54 pm
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!
July 4th, 2010 at 4:01 pm
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
December 1st, 2010 at 1:48 am
Este blog es verdaderamente bueno, pero hace tiempo que no hay entradas nuevas, que lastima.