Comment actualiser de nouvelles migrations dans le module de migration Drupal 8?


10

Lors de l'écriture de processus de migration Drupal 8, je ne peux actualiser de nouveaux processus de migration que si je réinstalle le module de migration personnalisé. drush cr ne fonctionne pas.

Explication:

J'ai un module, ie:, cm_migrationsqui a 2 migrations:

  • cm_users
  • cm_tags

Avec drush msje vois:

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                                

J'écris un nouveau processus de migration:

  • cm_beers

J'exécute drush cr; drush mset je vois le même tableau que le précédent.

Ce n'est que lorsque je désinstalle et installe que cm_migrationsje peux voir les trois processus de migration:

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              

Avez-vous la moindre idée de comment actualiser les processus de migration sans réinstaller le module?

Merci


De plus, je peux dire que si j'exécute le processus de migration, supprime le contenu migrate.migration.cm_beers.ymlet réexécute le processus, la migration n'échoue pas. Il semble que le contenu du fichier yaml soit mis en cache quelque part.
Ignacio Sánchez

Réponses:


18

J'ai trouvé que ça fonctionnait pour moi

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


Salut, ce qui précède donne l'erreur suivante: Le répertoire source n'existe pas. La source n'est pas un répertoire.
harshal

5

Il y a un module pour ça. Puisque normalement les fichiers yml ne sont chargés qu'à l'installation.

Ce module vous permet de définir quels fichiers de configuration de module sont importés automatiquement.

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

Voir également cet article de blog: https://blog.liip.ch/archive/2016/05/04/using-the-new-drupal-8-migration-api-module.html

Développer vos propres modules de migration Drupal 8 et lutter contre les problèmes de mise en cache

Vous avez appris que l'intégralité du mappage de migration est désormais effectuée dans des fichiers yaml. Mais que diriez-vous d'écrire vos propres fichiers yaml de migration?

Malheureusement, il existe des écueils pour les nouveaux développeurs Drupal 8. En raison de l'interface de gestion de la configuration ( https://www.drupal.org/documentation/administer/config ) de Drupal 8, tous les fichiers yml du répertoire «config / install» ne sont importés que lors de l'installation du module.

Ceci est très peu pratique si vous souhaitez développer de nouveaux fichiers de configuration. Pour y remédier, un module «Développement de configuration» ( https://www.drupal.org/project/config_devel ) qui résout les problèmes de mise en cache peut être installé. Il est possible d'importer certains fichiers yml à chaque demande. Mais malheureusement, les commandes drush ne sont pas encore prises en charge. Nous devons donc ajouter tous les fichiers yaml que nous voulons importer dans une nouvelle section de notre module.info.yml.

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

Ensuite, nous pouvons exécuter les commandes suivantes après la mise à jour du fichier yml. Cela importera le nouveau fichier de configuration dans l'interface de gestion de la configuration.

drush cdi <module_name>
drush cr

Je n'arrive pas à faire fonctionner cela et la documentation fait défaut. Pouvez-vous donner un peu plus d'informations? drupal.org/node/2845304
Michael Mallett

5

Les migrations doivent être dans le MODULENAME/migrationssous - répertoire. Après avoir modifié une configuration de migration, un simple drush crsuffit pour appliquer les changements.

Un dérivé de configuration reconvertira une configuration de migration en un plugin de migration.

Voir cet enregistrement de changement: les migrations sont des plugins au lieu d'entités de configuration


2

Je me débattais avec le même problème: comment mettre à jour la configuration de migration pendant le développement. Voici ce que j'ai fini avec:

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

config-devel-import-one, la commande ( cdi1pour faire court) est destinée à importer une seule configuration dans la configuration active. C'est la partie du module config_devel mentionnée ci-dessus.


1

Je n'ai pas réussi avec la solution de FLY. J'ai également dû désinstaller migrate_tools pour que yaml soit actualisé. Et pas de chance avec devel_config.

J'ai trouvé ces configurations rafraîchies:

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

0

Suite à la solution de Peter J Lord, vous pouvez également ajouter un répertoire de configuration (pour les ymls nouveaux ou mis à jour) à votre fichier settings.php. par exemple:

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

Placez de nouveaux fichiers yml dans ce répertoire, puis importez les nouveaux paramètres de configuration avec la commande config-import de drush:

drush cim fresh --partial 

-1

J'ai trouvé que parfois aucun des travaux ci-dessus. Même en les combinant tous. Cependant, je pourrais tromper migrate_tools pour me donner un aperçu.

Apparemment, il y a une vérification si le fichier yml est valide avant d'être répertorié. Essayez d'exécuter l'importateur (oui, même s'il n'apparaît pas avec $ drush ms)

Ma migration s'appelait des produits, alors j'ai fait: $ drush mim products

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

Corriger ce défaut (changer int en entier dans mon cas) puis suivre la réponse de @FLY ci-dessus a fait apparaître la migration. Dommage que l'erreur ne soit pas apparue et qu'elle ait échoué silencieusement, mais c'est un autre sujet. ;-)

PS J'aurais posté ceci en tant que commentaire, mais je n'ai pas encore assez de points.


-2

Dans la réponse de FLY ci-dessus, drush cdi <module_name>devrait maintenant l'être drush cde <module_name>.


2
drush cde exporte la config et écrase ce que vous avez. Ce n'est pas ce que nous voulons. Comment est-ce accepté?
Michael Mallett, le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.