Как обновить новые миграции в модуле миграции Drupal 8?


10

При написании процессов миграции в Drupal 8 я могу обновлять новые процессы миграции только после переустановки пользовательского модуля миграции. Drush CR не работает.

Объяснение:

У меня есть один модуль, а именно:, cm_migrationsкоторые имеют 2 миграции:

  • cm_users
  • cm_tags

С drush msя вижу:

Group: beer     Status  Total  Imported  Unprocessed  Last imported       
 cm_users        Idle    3      3         0            2016-02-09 16:56:25 
 cm_tags         Idle    4      0         4                                

Я пишу новый процесс миграции:

  • cm_beers

Я выполняю drush cr; drush msи вижу ту же таблицу, что и предыдущая.

Только после удаления и установки cm_migrationsя вижу три процесса миграции:

Group: beer     Status  Total  Imported  Unprocessed  Last imported       
 cm_users        Idle    3      3         0            2016-02-09 16:56:25 
 cm_tags         Idle    4      0         4                          
 cm_beers        Idle    4      0         4              

Любая подсказка о том, как я могу обновить процессы миграции без переустановки модуля?

Спасибо


Кроме того, я могу сказать, что если я выполню процесс миграции, удалю содержимое migrate.migration.cm_beers.ymlи снова выполню процесс, миграция не завершится неудачей. Кажется, где-то кешируется содержимое файла yaml.
Игнасио Санчес

Ответы:


18

Я нашел, что это работает для меня

drush config-import --partial --source = modules / custom / migrate_module / config / install /


Привет, выше выдает следующую ошибку: Исходный каталог не существует. Источник не каталог.
Харшал

5

Для этого есть модуль. Так как обычно файлы yml загружаются только после установки.

Этот модуль позволяет вам определить, какие файлы конфигурации модуля импортируются автоматически.

https://www.drupal.org/project/config_devel

Также смотрите этот пост в блоге: https://blog.liip.ch/archive/2016/05/04/using-the-new-drupal-8-migration-api-module.html

Разработка собственных модулей переноса Drupal 8 и борьба с проблемами кэширования

Вы узнали, что все отображение миграции теперь выполняется в файлах yaml. Но как насчет написания собственных миграционных файлов yaml?

К сожалению, есть некоторые подводные камни для новых разработчиков Drupal 8. Благодаря интерфейсу управления конфигурацией ( https://www.drupal.org/documentation/administer/config ) в Drupal 8 все файлы yml в каталоге «config / install» импортируются только при установке модуля.

Это очень непрактично, если вы хотите разрабатывать новые файлы конфигурации. Для решения этой проблемы можно установить модуль «Разработка конфигурации» ( https://www.drupal.org/project/config_devel ), который решает проблемы с кэшированием. Можно импортировать определенные файлы yml по каждому запросу. Но, к сожалению, команды drush пока не поддерживаются. Поэтому нам нужно добавить все файлы yaml, которые мы хотим импортировать, в новый раздел в нашем module.info.yml.

config_devel:
 install:
   - migrate_plus.migration.page_node
   - migrate_plus.migration.menu_item
   - migrate_plus.migration_group.liip

Затем мы можем запустить следующие команды после обновления файла yml. Это импортирует новый файл конфигурации в интерфейс управления конфигурацией.

drush cdi <module_name>
drush cr

Я не могу заставить это работать, и документация отсутствует. Можете ли вы дать немного больше информации? drupal.org/node/2845304
Майкл Маллетт

5

Миграции должны быть в MODULENAME/migrationsподкаталоге. После изменения конфигурации миграции drush crдостаточно просто применить изменения.

Производный конфигурации превратит конфигурацию миграции обратно в плагин миграции.

Посмотрите эту запись об изменениях: Миграции - это плагины, а не объекты конфигурации.


2

Я боролся с той же проблемой: как обновить конфигурацию миграции во время разработки. Вот что я закончил:

drush cdi1 path-to-config-dir-form-site-root/your-config.yml

config-devel-import-oneКоманда ( cdi1для краткости) предназначена для импорта одной конфигурации в активную конфигурацию. Это часть модуля config_devel, упомянутого выше.


1

У меня не было успеха с решением FLY. Пришлось также удалить migrate_tools, чтобы обновить yaml. И не повезло с devel_config.

Я нашел это обновленные конфигурации:

$ drush @site_alias pmu mymodule, migrate_tools, migrate_plus -y
$ drush @site_alias en mymodule, migrate_tools, migrate_plus -y

0

Следуя решению Peter J Lord, вы также можете добавить каталог config (для новых или обновленных ymls) в ваш файл settings.php. например:

$config_directories['fresh'] = 'sites/default/fresh';

Поместите новые файлы yml в этот каталог, а затем импортируйте новые параметры конфигурации с помощью команды drush config-import:

drush cim fresh --partial 

-1

Я обнаружил, что иногда ничего из вышеперечисленного не работает. Даже объединяя их всех. Однако я мог обмануть migrate_tools, чтобы дать мне некоторое представление.

Очевидно, существует проверка, является ли файл yml действительным, прежде чем он будет внесен в список. Попробуйте запустить импортер (да, даже если он не отображается с $ drush ms)

Моя миграция называлась продуктами, поэтому я сделал: $ drush mim products

Migration failed with source plugin exception: The &quot;int&quot; plugin does not exist.

Исправление этой ошибки (в моем случае изменение int на integer), а затем следование ответу @FLY, приведенному выше, привело к появлению миграции. Позор, ошибка не обнаружилась, и она просто молча провалилась, но это уже другая тема. ;-)

PS Я бы опубликовал это как комментарий, но у меня пока недостаточно очков.


-2

В ответе FLY выше, drush cdi <module_name>теперь должно быть drush cde <module_name>.


2
drush cde экспортирует конфиг и перезаписывает то, что у вас есть. Это не то, что мы хотим. Как это принято?
Майкл Маллетт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.