Creo que debería arreglar las migraciones ofensivas para que sean menos frágiles, supongo que un par de declaraciones if
y quizás un rescue
serían suficientes.
Pero, si corregir las migraciones realmente no es una opción, puede falsificarlo de varias maneras. En primer lugar, puede comentar los métodos de migración, ejecutar rake db:migrate
, y luego descomentar (o revertir) la migración ofensiva.
También puede falsificarlo dentro de la base de datos, pero este tipo de trapacería no es recomendable a menos que sepa lo que está haciendo y no le moleste arreglar manualmente cuando (inevitablemente) comete un error. Hay una tabla en su base de datos llamada schema_migrations
que tiene una sola columna varchar(255)
llamada version
; db:migrate
utiliza esta tabla para realizar un seguimiento de las migraciones que se han aplicado. Todo lo que necesita hacer es INSERTAR el valor apropiado version
y rake db:migrate
pensará que la migración se ha realizado. Encontrar el archivo de migración infractor:
db/migrate/99999999999999_XXXX.rb
luego ir en su base de datos y dicen:
insert into schema_migrations (version) values ('99999999999999');
donde 99999999999999
es, por supuesto, el número de nombre de archivo de la migración. Luego ejecutar rake db:migrate
debe omitir esa migración.
Iría con la segunda opción antes de la tercera, solo estoy incluyendo la opción "hackear schema_versions
" para que esté completa.
Ya, yo sólo siguieron adelante y cortar las migraciones ofensivos temporalmente. Personalmente, habría creado las sentencias If correctas o simplemente hubiera verificado el entorno de producción, pero aparentemente la persona que maneja las migraciones no cree en usar db: migrate al desarrollar = P Gracias – hmind
@hmind: "la persona que maneja el migrations no cree en usar db: migrate mientras se desarrolla ". Oh mi. ¡Publicar en sus sistemas de producción debe ser un momento de diversión súper feliz! –
afortunadamente, yo no manejo eso tampoco jaja – hmind