ruby-on-rails - left - rails sql query
Rails 4 cómo ignorar las migraciones pendientes (5)
El problema es siguiente:
- Tengo db / seed.rb lleno de datos iniciales.
- Una de las migraciones depende de los datos que proporciona esta semilla.
- Estoy intentando implementar mi aplicación desde db vacía.
El resultado es:
- RAILS_ENV = producción rake db: migrate - falla debido a la falta de datos iniciales
- RAILS_ENV = production rake db: seed - falla debido a migraciones pendientes
Quería de alguna manera decirle a rake que ignore las migraciones pendientes, pero no puede hacerlo hasta ahora.
ACTUALIZACIÓN (debido a experiencia adicional)
A veces, las migraciones y el código del modelo no se sincronizan, por lo que las migraciones no se ejecutan. Para evitar este problema recientemente, redefinición del modelo en migraciones:
# reset all callbacks, hooks, etc for this model
class MyAwesomeModel < ActiveRecord::Base
end
class DoSomethingCool < ActiveRecord::Migration
def change
...
end
end
Cambie el nombre de la migración según los datos de:
20140730091353_migration_name.rb
a
.20140730091353_migration_name.rb
(agregue un punto al comienzo del nombre de archivo)
A continuación, ejecute rake db:seed
(ya no se quejará de las migraciones pendientes) y luego cambie el nombre de la migración.
Si tiene más migraciones después, debe cambiar el nombre de todos o simplemente moverlo de forma temporal.
No estoy muy seguro de si esto te ayudará. Pero estaba buscando algo y encontré esta pregunta. Entonces parece que esto podría ayudar:
En RAILS_ROOT / config / environments / development.rb Establezca la siguiente configuración en falso:
config.active_record.migration_error = false#:page_load
En mi situación, ahora ya no muestra el error de migración pendiente. Debería trabajar para tareas de rake y consolar para el mismo entorno también.
No hay forma de que a menos que seas parchear el código de Rails. Le recomiendo encarecidamente que corrija sus migraciones en su lugar.
Una migración no debe depender de la existencia de algunos datos en la base de datos. Puede depender de una migración previa, pero, por supuesto, no de los datos en el db.
Rails almacena información de migración en una tabla llamada schema_migrations
.
Puede agregar la versión de su migración a esa tabla para omitir una migración específica.
La versión es la cadena de números que viene antes de la descripción en el nombre del archivo.
[version]_Create_Awesome.rb
Tuve un problema similar. Comenté las líneas add_column y ejecuté los comandos rake db: migrate y luego eliminé el comentario cuando lo necesite para el entorno de prueba o producción.