Come aggiornare le nuove migrazioni nel modulo di migrazione di Drupal 8?


10

Quando scrivo i processi di migrazione di Drupal 8 posso solo aggiornare i nuovi processi di migrazione se reinstallo il modulo di migrazione personalizzato. drush cr non funziona.

Spiegazione:

Ho un modulo, cioè:, cm_migrationsche ha 2 migrazioni:

  • cm_users
  • cm_tags

Con drush msvedo:

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                                

Scrivo un nuovo processo di migrazione:

  • cm_beers

Eseguo drush cr; drush mse vedo la stessa tabella della precedente.

Solo quando disinstallo e installo cm_migrationsposso vedere i tre processi di migrazione:

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              

Qualche idea su come posso aggiornare i processi di migrazione senza reinstallare il modulo?

Grazie


Inoltre, posso dire che se eseguo il processo di migrazione, elimino il contenuto migrate.migration.cm_beers.ymled eseguo nuovamente il processo, la migrazione non fallisce. Sembra essere memorizzato nella cache il contenuto del file yaml da qualche parte.
Ignacio Sánchez,

Risposte:


18

Ho scoperto che ha funzionato per me

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


Ciao, quanto sopra dà il seguente errore: La directory di origine non esiste. La fonte non è una directory.
Harshal,

5

C'è un modulo per quello. Poiché normalmente i file yml vengono caricati solo al momento dell'installazione.

Questo modulo consente di definire quali file di configurazione del modulo vengono importati automaticamente.

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

Vedi anche questo post sul blog: https://blog.liip.ch/archive/2016/05/04/using-the-new-drupal-8-migration-api-module.html

Sviluppare i propri moduli di migrazione di Drupal 8 e combattere i problemi di cache

Hai appreso che l'intera mappatura della migrazione viene ora eseguita in file yaml. Ma che ne dici di scrivere i tuoi file yaml di migrazione?

Sfortunatamente, ci sono alcune insidie ​​per i nuovi sviluppatori di Drupal 8. A causa della Configuration Management Interface ( https://www.drupal.org/documentation/administer/config ) di Drupal 8, tutti i file yml nella directory “config / install” vengono importati solo durante l'installazione del modulo.

Questo è molto poco pratico se si desidera sviluppare nuovi file di configurazione. Per risolvere questo problema, è possibile installare un modulo "Sviluppo della configurazione" ( https://www.drupal.org/project/config_devel ) che risolve i problemi di memorizzazione nella cache. È possibile importare determinati file yml su ogni richiesta. Ma sfortunatamente i comandi drush non sono ancora supportati. Quindi dobbiamo aggiungere tutti i file yaml che vogliamo importare in una nuova sezione nel nostro module.info.yml.

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

Quindi possiamo eseguire i seguenti comandi dopo aver aggiornato il file yml. Ciò importerà il nuovo file di configurazione nell'interfaccia di gestione della configurazione.

drush cdi <module_name>
drush cr

Non riesco a farlo funzionare e la documentazione è carente. Puoi darci qualche informazione in più? drupal.org/node/2845304
Michael Mallett,

5

Le migrazioni dovrebbero essere nella MODULENAME/migrationssottodirectory. Dopo aver modificato una configurazione di migrazione, è drush crsufficiente applicare le modifiche.

Un deriver di configurazione trasformerà nuovamente una configurazione di migrazione in un plugin di migrazione.

Vedi questo record di modifica: le migrazioni sono plug-in anziché entità di configurazione


2

Ero alle prese con lo stesso problema: come aggiornare la configurazione della migrazione durante lo sviluppo. Ecco cosa ho finito con:

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

config-devel-import-one, comando ( cdi1in breve) ha lo scopo di importare la configurazione singola nella configurazione attiva. È la parte del modulo config_devel menzionata sopra.


1

Non ho avuto successo con la soluzione di FLY. Ho dovuto disinstallare anche migrate_tools, per ottenere l'aggiornamento di yaml. E senza fortuna devel_config.

Ho trovato queste configurazioni aggiornate:

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

0

Seguendo la soluzione di Peter J Lord, puoi anche aggiungere una directory di configurazione (per ymls nuovi o aggiornati) al tuo file settings.php. per esempio:

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

Inserire i nuovi file yml in quella directory e quindi importare le nuove impostazioni di configurazione con il comando config-import di drush:

drush cim fresh --partial 

-1

Ho scoperto che a volte nessuna delle precedenti funzioni. Anche combinandoli tutti. Tuttavia, potrei indurre migrate_tools a farmi un'idea.

Apparentemente c'è un controllo se il file yml è valido prima che venga elencato. Prova a eseguire l'importatore (sì, anche se non viene visualizzato con $ drush ms)

La mia migrazione si chiamava prodotti, quindi ho fatto: $ drush mim products

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

Risolvendo questo errore (cambiando int in intero nel mio caso) e quindi seguendo la risposta di @FLY sopra ho fatto apparire la migrazione. Peccato che l'errore non sia apparso e sia fallito silenziosamente, ma questo è un altro argomento. ;-)

PS Avrei pubblicato questo come commento, ma non ho ancora abbastanza punti.


-2

Nella risposta di FLY sopra, drush cdi <module_name>ora dovrebbe essere drush cde <module_name>.


2
drush cde esporta la configurazione e sovrascrive ciò che hai. Non è quello che vogliamo. Come viene accettato?
Michael Mallett,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.