Estoy tratando de ejecutar solo una migración de un montón en mi aplicación rails. ¿Cómo puedo hacer esto? No quiero ejecutar ninguna de las migraciones antes o después. Gracias.
ruby-on-rails
database
migration
rake
Luego
fuente
fuente
STEP=n
argumento paradb:migrate
(donden
es el número de migraciones a plazo, al igual que lo hay paradb:rollback
) - entonces usted podría hacerrake db:migrate STEP=1
orake db:migrate STEP=2
, etcRespuestas:
rake db:migrate:redo VERSION=xxxxxxx
, pero eso ejecutará eldown
y luego elup
paso. Puede hacer esto junto con comentar el paso hacia abajo temporalmente.fuente
rake -T
.db:test:prepare
tampoco aparece en esa lista. Dios, llego tarde a la fiesta.rake db:migrate:up VERSION=my_version
posible que no haga nada , porque la tabla schema_migrations todavía dice que se ha ejecutado. En la misma situaciónrake db:migrate:redo VERSION=my_version
puede fallar porque no se puede soltar la mesa. En este caso, comente eldown
método en la migración temporalmente y vuelva a ejecutarrake db:migrate:redo...
de manera similar
rake db:migrate:down
para eliminar una migración específica. Puede obtener una lista de tareas de rake disponibles conrake -T
.fuente
VERSION
mencionado aquí es el valor entero al comienzo de cada uno de sus archivos de migración (que es solo la marca de tiempo de cuando se creó). Por ejemploVERSION=20150720023630
,.VERSION
es solo una variable de entorno, por lo que puede aparecer primero en el comando o incluso establecerse antes del comando:VERSION=1234567890 rake db:migrate:up
Tuve que ejecutar una única migración que cambió y necesitaba volver a ejecutarse independientemente de todas las demás migraciones. Enciende la consola y haz esto:
Más útilmente, esto podría ponerse en una tarea de rastrillo, etc.
fuente
change
, ejecute en suYourMigrations.migrate(:up)
lugar (¡o:down
también!)require "#{Rails.root}/db/migrate/your_migrations.rb"
rake db:migrate:up VERSION=version_no
Migrará (agregará) un script de migración específico
rake db:migrate:down VERSION=version_no
Eliminará un script de migración específico
fuente
pruébalo.
fuente
VERSION
es solo una variable de entorno, por lo que puede aparecer primero en el comando o incluso establecerse antes del comando:VERSION=20098252345 rake db:migrate
Recuerde poner las comillas alrededor de xxxx, xxxx es la marca de tiempo (o ID de migración) para su migración.
Puede comprobar las marcas de tiempo (ID de migración) de las migraciones anteriores que ha realizado utilizando
fuente
Ampliar la respuesta de korch anterior
require
no funcionó para mí, pero loload
hizo. Para ser concreto, para el archivo de migración:en la consola escribiendo
trabajó para mi.
Esto fue para ruby 1.9.3p484 (2013-11-22 revisión 43786) [x86_64-linux] y Rails 3.2.13.
fuente
Agregando mis 2 ¢ a esto porque me encontré con el mismo problema:
Si absolutamente desea ejecutar una migración nuevamente sin crear una nueva, puede hacer lo siguiente:
rails dbconsole -p devdb=# delete from public.schema_migrations where version = '20150105181157';
Y rails "olvidará" que ejecutó la migración para 20150105181157. Ahora, cuando ejecute db: migrate, lo ejecutará de nuevo.
Sin embargo, casi siempre es una mala idea. La única instancia en la que podría tener sentido es si tiene una rama de desarrollo y aún no ha desarrollado su migración y desea agregarle algunas cosas en desarrollo. Pero incluso entonces es mejor realizar la migración en dos direcciones para que pueda retroceder correctamente y volver a intentarlo repetidamente.
fuente
Tiene que haber una forma de ejecutar la clase de migración a través de la consola. Parece que no consigo que el código de migraciones sea reconocible.
Sin embargo, como indican los comentarios, se prefiere ejecutar las migraciones en orden. Utilizar:
¿Copiar y pegar su código en la migración al script / consola?
fuente
Tengo un método de utilidad que facilita mucho el desarrollo. Me parece que me ayuda a evitar crear demasiadas migraciones; normalmente modifico las migraciones hasta que se han implementado.
http://fullware.net/index.php/2011/05/26/easily-load-rails-migrations-for-console-execution/
fuente
Utilizo esta técnica en el desarrollo cuando cambio una migración en una cantidad significativa, y no quiero migrar una tonelada y perder datos en el camino (especialmente cuando estoy importando datos heredados que toman mucho tiempo que No quiero tener que volver a importar).
Esto es 100% pirateado y definitivamente no recomendaría hacerlo en producción, pero funcionará:
fuente