ruby-on-rails ruby-on-rails-3.1

ruby on rails - Ejecutar migraciones desde la consola de rieles.



ruby-on-rails ruby-on-rails-3.1 (7)

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

Vea el archivo completo aquí: https://gist.github.com/imme5150/6548368

¿Hay alguna manera de ejecutar comandos rake para db: migrate y db: rollback en la consola?

¡Apesta esperar a que se cargue el entorno de los rieles!


En la consola:

ActiveRecord::Migration.remove_column :table_name, :column_name


Esto le permitirá migrar sin volver a cargar todo el entorno de los rieles:

ActiveRecord::Migrator.migrate "db/migrate"

y revertir:

# 3 is the number of migration to rollback, optional, defaults to 1 ActiveRecord::Migrator.rollback "db/migrate", 3


Necesitaba fingir que se ejecutó una migración para desbloquear un despliegue, esto se puede hacer con:

class Mig < ActiveRecord::Base; self.table_name = ''schema_migrations'';end Mig.create! version: ''20180611172637''


Otra forma en que me parece más ordenado para ejecutar un comando de migración desde 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 .


Para los rieles 5.2, la respuesta aceptada ha sido eliminada y reemplazada por

ActiveRecord::MigrationContext.new("db/migrate").migrate

Tenga en cuenta que esto también puede cambiar para futuras versiones de rieles, ya que funcionan para agregar múltiples conexiones de base de datos


Puedes usar el comando% x

%x[rake db:migrate]