¿Hay alguna forma de ejecutar los comandos de rake para db: migrate y db: rollback en la consola?Ejecutar migraciones desde la consola de rieles
¡Es una mierda esperar a que se cargue el entorno de los rieles!
¿Hay alguna forma de ejecutar los comandos de rake para db: migrate y db: rollback en la consola?Ejecutar migraciones desde la consola de rieles
¡Es una mierda esperar a que se cargue el entorno de los rieles!
Esto le permitirá migrar sin volver a cargar todo el entorno rieles:
ActiveRecord::Migrator.migrate "db/migrate"
y rollback:
# 3 is the number of migration to rollback, optional, defaults to 1
ActiveRecord::Migrator.rollback "db/migrate", 3
Creé un método en mi archivo .irbrc que ejecuta migraciones y luego vuelve a cargar la consola:
def migrate
if defined? Rails::Console # turn off info logging for Rails 3
old_log_level = ActiveRecord::Base.logger.try(:sev_threshold)
ActiveRecord::Base.logger.sev_threshold = Logger::WARN
end
reload! && migations_ran = true if ActiveRecord::Migrator.migrate(Rails.root.join("db/migrate")).any?
ActiveRecord::Base.logger.sev_threshold = old_log_level if defined? old_log_level
migations_ran ||= nil # useful exit status
end
Ver todo el archivo aquí: https://gist.github.com/imme5150/6548368
En la consola:
ActiveRecord::Migration.remove_column :table_name, :column_name
Perfecto para ejecutar comandos de migraciones. Gracias. –
Después de hacer esto, necesita actualizar manualmente su esquema. –
@WestonGanger ¿cómo? – nruth
Otra forma en que me parece más ordenado que acaba de ejecutar algún comando de migración de la consola es la siguiente:
ActiveRecord::Schema.define do
create_table :foo do |t|
t.string :bar
t.timestamps
end
end
Esto tiene la ventaja de que el contenido dentro del bloque es compatible con solo copiar y pegar contenido aleatorio de un archivo de migración real/schema.rb
.
Tenga en cuenta que si usa Mongoid, es lo mismo: 'Mongoid :: Migrator.migrate" db/migrate "' –
Esto es perfecto para agregar a su test_helper.rb en las aplicaciones de Rails –
Error recibido, bash: ActiveRecord :: Migrator.migrate: comando no encontrado ... usando Rails 2.3.18, ruby 1.9.3p551, Ahora se ejecuta después de ejecutar el comando dentro de la consola de rails. –