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 ms
widzę:
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 ms
i widzę tę samą tabelę, co poprzednio.
Dopiero po odinstalowaniu i zainstalowaniu cm_migrations
widzę 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
migrate.migration.cm_beers.yml
i ponownie uruchom proces, migracja nie powiedzie się. Wygląda na to, że gdzieś zapisano w pamięci podręcznej zawartość pliku yaml.Odpowiedzi:
Odkryłem, że to działało dla mnie
źródło
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
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.
Następnie możemy uruchomić następujące polecenia po zaktualizowaniu pliku yml. Spowoduje to zaimportowanie nowego pliku konfiguracyjnego do interfejsu zarządzania konfiguracją.
źródło
Migracje powinny znajdować się w
MODULENAME/migrations
podkatalogu. Po zmodyfikowaniu konfiguracji migracjidrush cr
wystarczy zastosować zmiany.Deriver konfiguracji zmieni z powrotem konfigurację migracji w wtyczkę migracji.
Zobacz ten rekord zmian: Migracje to wtyczki zamiast jednostek konfiguracji
źródło
Walczyłem z tym samym problemem: jak zaktualizować konfigurację migracji podczas programowania. Oto, z czym skończyłem:
config-devel-import-one
, polecenie (cdi1
w skrócie) służy do importowania pojedynczej konfiguracji do aktywnej konfiguracji. Jest to część modułu config_devel wspomniana powyżej.źródło
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:
źródło
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:
Umieść nowe pliki yml w tym katalogu, a następnie zaimportuj nowe ustawienia konfiguracji za pomocą polecenia config-import drush:
źródło
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 "int" 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.
źródło
W odpowiedzi FLY powyżej
drush cdi <module_name>
powinno być terazdrush cde <module_name>
.źródło