Что я передаю в schema_migration в ActiveRecord :: MigrationContext # new - PullRequest
0 голосов
/ 01 апреля 2020

Начиная с последней версии Rails, ActiveRecord::MigrationContext#new, похоже, принимает новый аргумент под названием schema_migration. Но я понятия не имею, что туда пройти и где его взять.

Я не могу найти никакой информации о нем. Я гуглил в течение часа, все примеры для MigrationContext, которые я нашел, ссылались на более старые версии rails. Класс MigrationContext, похоже, не документирован вообще. Исходя из исходного кода я не мог понять, что передать.

Некоторый контекст: я пытаюсь проверить некоторые из моих более опасных миграций. Я нашел довольно много уроков, и это казалось легким, и я пошел и сделал это. Но код, который подготавливает состояние тестовой базы данных, чтобы я мог применить миграцию, в настоящее время не работает. К сожалению, все учебники использовали более старые версии Rails, и это не удалось из-за неправильного количества аргументов:

ActiveRecord::MigrationContext.new(migrations_paths)

1 Ответ

0 голосов
/ 01 апреля 2020

Я узнал, что мне нужно передать:

ActiveRecord::Base.connection.schema_migration

Таким образом, весь код будет:

  migrations_paths = ActiveRecord::Migrator.migrations_paths
  schema_migration = ActiveRecord::Base.connection.schema_migration
  migration_context = ActiveRecord::MigrationContext.new(migrations_paths, schema_migration)

Я гуглил и пытался в течение часа и не понял вне, но сразу после публикации вопроса, я наконец наткнулся на этот вопрос github https://github.com/pat/combustion/issues/98, который имел ту же проблему и решение.

...