Як оновити нові міграції в міграційному модулі 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.
Ігнасіо Санчес

Відповіді:


19

Я виявив, що це працює для мене

drush config-import --partial --source = module / 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, які ми хочемо імпортувати, до нового розділу в нашому модулі.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застосувати зміни.

Виробник config перетворить конфігурацію міграції назад у плагін міграції.

Дивіться цей запис змін: Міграції - це плагіни замість об'єктів конфігурації


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

Дотримуючись рішення Пітера Дж. Лорда, ви також можете додати конфігураційний каталог (для нових або оновлених ymls) у файл settings.php. наприклад:

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

Помістіть нові файли yml у цей каталог, а потім імпортуйте нові параметри конфігурації за допомогою команди 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 на ціле число), а потім наступна відповідь @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.