¿Cómo actualizar nuevas migraciones en el módulo de migración de Drupal 8?

10

Al escribir procesos de migración de Drupal 8, solo puedo actualizar los nuevos procesos de migración si reinstalo el módulo de migración personalizado. drush cr no funciona.

Explicación:

Tengo un módulo, es decir cm_migrations, que tiene 2 migraciones:

  • cm_users
  • cm_tags

Con drush msveo:

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                                

Escribo un nuevo proceso de migración:

  • cm_beers

Ejecuto drush cr; drush msy veo la misma tabla que la anterior.

Solo cuando desinstalo e instalo cm_migrationspuedo ver los tres procesos de migración:

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              

¿Alguna pista sobre cómo puedo actualizar los procesos de migración sin reinstalar el módulo?

Gracias

Ignacio Sánchez
fuente
Además, puedo decir que si ejecuto el proceso de migración, elimino el contenido migrate.migration.cm_beers.ymly vuelvo a ejecutar el proceso, la migración no falla. Parece estar almacenado en caché el contenido del archivo yaml en alguna parte.
Ignacio Sánchez

Respuestas:

18

Encontré que esto funcionó para mí

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

Peter J Lord
fuente
Hola, lo anterior da el siguiente error: El directorio de origen no existe. La fuente no es un directorio.
harshal
5

Hay un módulo para eso. Como normalmente los archivos yml solo se cargan al instalarlos.

Este módulo le permite definir qué archivos de configuración del módulo se importan automáticamente.

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

También vea esta entrada del blog: https://blog.liip.ch/archive/2016/05/04/using-the-new-drupal-8-migration-api-module.html

Desarrollar sus propios módulos de migración de Drupal 8 y combatir los problemas de almacenamiento en caché

Has aprendido que toda la asignación de migración ahora se realiza en archivos yaml. Pero, ¿qué hay de escribir sus propios archivos de migración yaml?

Desafortunadamente, existen algunas dificultades para los nuevos desarrolladores de Drupal 8. Debido a la interfaz de administración de configuración ( https://www.drupal.org/documentation/administer/config ) de Drupal 8, todos los archivos yml en el directorio "config / install" solo se importan al instalar el módulo.

Esto es muy poco práctico si desea desarrollar nuevos archivos de configuración. Para solucionar esto, se puede instalar un módulo "Desarrollo de la configuración" ( https://www.drupal.org/project/config_devel ) que resuelve los problemas de almacenamiento en caché. Es posible importar ciertos archivos yml en cada solicitud. Pero desafortunadamente, los comandos drush aún no son compatibles. Por lo tanto, debemos agregar todos los archivos yaml que queremos importar a una nueva sección en nuestro module.info.yml.

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

Luego podemos ejecutar los siguientes comandos después de actualizar el archivo yml. Esto importará el nuevo archivo de configuración en la interfaz de administración de configuración.

drush cdi <module_name>
drush cr
VOLAR
fuente
No puedo hacer que esto funcione, y falta la documentación. ¿Puedes dar un poco más de información? drupal.org/node/2845304
Michael Mallett
5

Las migraciones deben estar en el MODULENAME/migrationssubdirectorio. Después de modificar una configuración de migración, drush crbasta con aplicar los cambios.

Un derivador de configuración convertirá una configuración de migración nuevamente en un complemento de migración.

Consulte este registro de cambios: las migraciones son complementos en lugar de entidades de configuración

mpp
fuente
2

Estaba luchando con el mismo problema: cómo actualizar la configuración de migración durante el desarrollo. Esto es lo que terminé con:

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

config-devel-import-one, el comando ( cdi1para abreviar) está destinado a importar una configuración única en la configuración activa. Es la parte del módulo config_devel mencionado anteriormente.

Artreaktor
fuente
1

No tuve éxito con la solución de FLY. Tuve que desinstalar migrate_tools también, para actualizar yaml. Y sin suerte con devel_config.

Encontré estas configuraciones actualizadas:

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

Siguiendo la solución de Peter J Lord, también puede agregar un directorio de configuración (para ymls nuevos o actualizados) a su archivo settings.php. p.ej:

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

Coloque nuevos archivos yml en ese directorio y luego importe las nuevas configuraciones con el comando config-import de drush:

drush cim fresh --partial 
edg
fuente
-1

He encontrado que a veces ninguno de los anteriores funciona. Incluso combinándolos a todos. Sin embargo, podría engañar a migrate_tools para que me dé una idea.

Aparentemente, se verifica si el archivo yml es válido antes de que aparezca en la lista. Intente ejecutar el importador (sí, incluso si no aparece con $ drush ms)

Mi migración se llamaba productos, así que hice: $ drush mim products

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

Arreglando esta falla (cambiando int por entero en mi caso) y luego siguiendo la respuesta de @FLY arriba, apareció la migración. Es una pena que el error no apareció y simplemente falló en silencio, pero ese es otro tema. ;-)

PD: Hubiera publicado esto como un comentario, pero todavía no tengo suficientes puntos.

aleta
fuente
-2

En la respuesta de FLY arriba, drush cdi <module_name>ahora debería ser drush cde <module_name>.

Carole
fuente
2
drush cde exporta la configuración y sobrescribe lo que tienes. Eso no es lo que queremos. ¿Cómo se acepta esto?
Michael Mallett