Есть ли способ запуска команд rake для db: migrate и db: rollback на консоли?
Это отстой, ожидая загрузки среды рельсов!
Есть ли способ запуска команд rake для db: migrate и db: rollback на консоли?
Это отстой, ожидая загрузки среды рельсов!
Это позволит вам выполнить миграцию без перезагрузки всей среды рельсов:
ActiveRecord::Migrator.migrate "db/migrate"
и откат:
# 3 is the number of migration to rollback, optional, defaults to 1
ActiveRecord::Migrator.rollback "db/migrate", 3
В консоли:
ActiveRecord::Migration.remove_column :table_name, :column_name
Чтобы обновить файл schema.rb
после запуска миграции с консоли, вы должны запустить rails db:migrate
Другим способом, который я нашел, чтобы просто запустить некоторую команду миграции с консоли, является следующее:
ActiveRecord::Schema.define do
create_table :foo do |t|
t.string :bar
t.timestamps
end
end
Это имеет то преимущество, что содержимое внутри блока совместимо только с копированием и вставкой случайного содержимого из реального файла миграции/ schema.rb
.
Для рельсов 5.2 принятый ответ был удален и заменен на
ActiveRecord::MigrationContext.new("db/migrate").migrate
Помните, что это может измениться и для будущих версий rails, так как они работают для добавления нескольких соединений с базой данных.
Мне нужно было сделать вид, что миграция была запущена, чтобы разблокировать развертывание, это можно сделать с помощью:
class Mig < ActiveRecord::Base; self.table_name = 'schema_migrations';end
Mig.create! version: '20180611172637'
Вы можете использовать% x [команда]
%x[rake db:migrate]
Я создал метод в моем файле .irbrc, который запускает миграцию, затем перезагружает консоль:
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
Смотрите весь файл здесь: https://gist.github.com/imme5150/6548368