Como atualizar novas migrações no módulo de migração Drupal 8?


10

Ao escrever os processos de migração do Drupal 8, só posso atualizar novos processos de migração se eu reinstalar o módulo de migração personalizado. drush cr não funciona.

Explicação:

Eu tenho um módulo, ou seja:, cm_migrationsque tem 2 migrações:

  • cm_users
  • cm_tags

Com drush mseu vejo:

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                                

Eu escrevo um novo processo de migração:

  • cm_beers

Eu executo drush cr; drush mse vejo a mesma tabela que a anterior.

Somente quando desinstalo e instalo é cm_migrationsque vejo os três processos de migração:

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              

Alguma pista sobre como atualizar os processos de migração sem reinstalar o módulo?

obrigado


Além disso, posso dizer que, se eu executar o processo de migração, excluir o conteúdo migrate.migration.cm_beers.ymle executar novamente o processo, a migração não falhará. Parece estar em cache o conteúdo do arquivo yaml em algum lugar.
Ignacio Sánchez

Respostas:


18

Eu achei que isso funcionou para mim

drush config-import --partial --source = módulos / customizado / migrate_module / config / install /


Olá, o exemplo acima fornece o seguinte erro: O diretório de origem não existe. A fonte não é um diretório.
harshal

5

Existe um módulo para isso. Como normalmente os arquivos yml são carregados apenas na instalação.

Este módulo permite definir quais arquivos de configuração do módulo são importados automaticamente.

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

Consulte também esta postagem do blog: https://blog.liip.ch/archive/2016/05/04/using-the-new-drupal-8-migration-api-module.html

Desenvolvendo seus próprios módulos de migração do Drupal 8 e combatendo problemas de cache

Você aprendeu que todo o mapeamento de migração agora é feito em arquivos yaml. Mas e quanto a escrever seus próprios arquivos yaml de migração?

Infelizmente, existem algumas armadilhas para os novos desenvolvedores do Drupal 8. Por causa da Interface de Gerenciamento de Configuração ( https://www.drupal.org/documentation/administer/config ) do Drupal 8, todos os arquivos yml no diretório “config / install” são importados apenas ao instalar o módulo.

Isso é muito impraticável se você deseja desenvolver novos arquivos de configuração. Para resolver isso, pode ser instalado um módulo "Desenvolvimento de configuração" ( https://www.drupal.org/project/config_devel ) que resolve os problemas de armazenamento em cache. É possível importar certos arquivos yml em cada solicitação. Infelizmente, os comandos drush ainda não são suportados. Portanto, precisamos adicionar todos os arquivos yaml que queremos importar para uma nova seção em nosso module.info.yml.

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

Em seguida, podemos executar os seguintes comandos após atualizar o arquivo yml. Isso importará o novo arquivo de configuração para a Interface de Gerenciamento de Configuração.

drush cdi <module_name>
drush cr

Não consigo fazer isso funcionar, e a documentação está faltando. Você pode dar um pouco mais de informação? drupal.org/node/2845304
Michael Mallett

5

As migrações devem estar no MODULENAME/migrationssubdiretório. Depois de modificar uma configuração de migração, drush crbasta aplicar as alterações.

Um derivador de configuração transformará uma configuração de migração novamente em um plug-in de migração.

Veja este registro de alteração: Migrações são plug-ins em vez de entidades de configuração


2

Eu estava lutando com o mesmo problema: como atualizar a configuração da migração durante o desenvolvimento. Aqui está o que eu acabei com:

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

config-devel-import-one, o comando ( cdi1abreviado) pretende importar a configuração única para a configuração ativa. É a parte do módulo config_devel mencionado acima.


1

Não tive sucesso com a solução da FLY. Também tive que desinstalar o migrate_tools para atualizar o yaml. E sem sorte com devel_config.

Eu encontrei essas configurações atualizadas:

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

0

Seguindo a solução de Peter J Lord, você também pode adicionar um diretório de configuração (para ymls novos ou atualizados) ao seu arquivo settings.php. por exemplo:

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

Coloque novos arquivos yml nesse diretório e importe as novas configurações com o comando config-import do drush:

drush cim fresh --partial 

-1

Eu descobri que algumas vezes nenhum dos trabalhos acima. Mesmo combinando todos eles. No entanto, eu poderia enganar migrate_tools para me dar algumas dicas.

Aparentemente, há uma verificação se o arquivo yml é válido antes de ser listado. Tente executar o importador (sim, mesmo que ele não apareça $ drush ms)

Minha migração foi chamada de produtos, então fiz: $ drush mim products

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

Corrigir esta falha (alterar int para inteiro no meu caso) e depois seguir a resposta do @FLY acima fez a migração aparecer. Pena que o erro não apareceu e apenas falhou silenciosamente, mas esse é outro tópico. ;-)

PS: Eu teria postado isso como um comentário, mas ainda não tenho pontos suficientes.


-2

Na resposta de FLY acima, drush cdi <module_name>agora deve ser drush cde <module_name>.


2
drush cde exporta a configuração e sobrescreve o que você tem. Não é isso que queremos. Como isso é aceito?
Michael Mallett
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.