Jak odświeżyć nowe migracje w module migracji Drupal 8?


10

Pisząc procesy migracji Drupal 8, mogę odświeżyć nowe procesy migracji tylko wtedy, gdy przeinstaluję niestandardowy moduł migracji. Drush Cr nie działa.

Wyjaśnienie:

Mam jeden moduł, tj .: cm_migrations, które mają 2 migracje:

  • cm_users
  • cm_tags

Z drush mswidzę:

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                                

Piszę nowy proces migracji:

  • cm_beers

Wykonuję drush cr; drush msi widzę tę samą tabelę, co poprzednio.

Dopiero po odinstalowaniu i zainstalowaniu cm_migrationswidzę trzy procesy migracji:

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              

Wszelkie wskazówki na temat tego, jak mogę odświeżyć procesy migracji bez ponownej instalacji modułu?

Dzięki


Ponadto mogę powiedzieć, że jeśli wykonam proces migracji, usuń zawartość migrate.migration.cm_beers.ymli ponownie uruchom proces, migracja nie powiedzie się. Wygląda na to, że gdzieś zapisano w pamięci podręcznej zawartość pliku yaml.
Ignacio Sánchez

Odpowiedzi:


19

Odkryłem, że to działało dla mnie

drush config-import --partial --source = moduły / custom / migrate_module / config / install /


Cześć, powyższe powoduje następujący błąd: Katalog źródłowy nie istnieje. Źródło nie jest katalogiem.
harshal

5

Jest na to moduł. Ponieważ zwykle pliki yml są ładowane tylko podczas instalacji.

Ten moduł pozwala określić, które pliki konfiguracyjne modułu są automatycznie importowane.

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

Zobacz także ten post na blogu: https://blog.liip.ch/archive/2016/05/04/using-the-new-drupal-8-migration-api-module.html

Opracowywanie własnych modułów Drupal 8 migruje moduły i rozwiązuje problemy z buforowaniem

Nauczyłeś się, że całe mapowanie migracji jest teraz wykonywane w plikach yaml. Ale co powiesz na pisanie własnych plików yaml migracji?

Niestety istnieją pewne pułapki dla nowych programistów Drupal 8. Ze względu na interfejs zarządzania konfiguracją ( https://www.drupal.org/documentation/administer/config ) Drupala 8 wszystkie pliki yml w katalogu „config / install” są importowane tylko podczas instalacji modułu.

Jest to bardzo niepraktyczne, jeśli chcesz opracować nowe pliki konfiguracyjne. Aby rozwiązać ten problem, można zainstalować moduł „Rozwój konfiguracji” ( https://www.drupal.org/project/config_devel ), który rozwiązuje problemy z buforowaniem. Możliwe jest importowanie niektórych plików yml na każde żądanie. Niestety polecenia drush nie są jeszcze obsługiwane. Musimy więc dodać wszystkie pliki yaml, które chcemy zaimportować, do nowej sekcji w module module.info.yml.

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

Następnie możemy uruchomić następujące polecenia po zaktualizowaniu pliku yml. Spowoduje to zaimportowanie nowego pliku konfiguracyjnego do interfejsu zarządzania konfiguracją.

drush cdi <module_name>
drush cr

Nie mogę tego uruchomić, a dokumentacji brakuje. Czy możesz podać trochę więcej informacji? drupal.org/node/2845304
Michael Mallett

5

Migracje powinny znajdować się w MODULENAME/migrationspodkatalogu. Po zmodyfikowaniu konfiguracji migracji drush crwystarczy zastosować zmiany.

Deriver konfiguracji zmieni z powrotem konfigurację migracji w wtyczkę migracji.

Zobacz ten rekord zmian: Migracje to wtyczki zamiast jednostek konfiguracji


2

Walczyłem z tym samym problemem: jak zaktualizować konfigurację migracji podczas programowania. Oto, z czym skończyłem:

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

config-devel-import-one, polecenie ( cdi1w skrócie) służy do importowania pojedynczej konfiguracji do aktywnej konfiguracji. Jest to część modułu config_devel wspomniana powyżej.


1

Nie miałem sukcesu z rozwiązaniem FLY. Musiałem również odinstalować migrate_tools, aby uzyskać odświeżenie yaml. I bez powodzenia devel_config.

Znalazłem te odświeżone konfiguracje:

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

0

Kontynuując rozwiązanie Petera J Lorda, możesz również dodać katalog config (dla nowych lub zaktualizowanych plików ymls) do pliku settings.php. na przykład:

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

Umieść nowe pliki yml w tym katalogu, a następnie zaimportuj nowe ustawienia konfiguracji za pomocą polecenia config-import drush:

drush cim fresh --partial 

-1

Przekonałem się, że czasami żadna z powyższych nie działa. Nawet łącząc je wszystkie. Mogłem jednak oszukać migrate_tools, aby uzyskać wgląd.

Najwyraźniej sprawdzane jest, czy plik yml jest prawidłowy, zanim zostanie wymieniony na liście. Spróbuj uruchomić importera (tak, nawet jeśli się nie wyświetla $ drush ms)

Moja migracja nosiła nazwę produktów, więc: $ drush mim products

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

Naprawienie tego błędu (w moim przypadku zmiana liczby całkowitej na całkowitą), a następnie wykonanie powyższej odpowiedzi @FLY spowodowało wyświetlenie migracji. Szkoda, że ​​błąd nie pojawił się i po prostu cicho zawiódł, ale to już inny temat. ;-)

PS Chciałbym opublikować to jako komentarz, ale nie mam jeszcze wystarczającej liczby punktów.


-2

W odpowiedzi FLY powyżej drush cdi <module_name>powinno być teraz drush cde <module_name>.


2
drush cde eksportuje konfigurację i zastępuje to, co masz. Nie tego chcemy. Jak to jest akceptowane?
Michael Mallett,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.