Bagaimana cara me-refresh migrasi baru dalam modul migrasi Drupal 8?

10

Saat menulis proses migrasi Drupal 8, saya hanya dapat menyegarkan proses migrasi baru jika saya menginstal ulang modul migrasi khusus. cr drush tidak bekerja.

Penjelasan:

Saya punya satu modul, yaitu:, cm_migrationsyang memiliki 2 migrasi:

  • cm_users
  • cm_tags

Dengan drush mssaya melihat:

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                                

Saya menulis proses migrasi baru:

  • cm_beers

Saya mengeksekusi drush cr; drush msdan saya melihat tabel yang sama seperti sebelumnya.

Hanya ketika saya menghapus dan menginstal cm_migrationssaya dapat melihat tiga proses migrasi:

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              

Adakah petunjuk tentang bagaimana cara menyegarkan proses migrasi tanpa menginstal ulang modul?

Terima kasih

Ignacio Sánchez
sumber
Selain itu, saya dapat mengatakan bahwa jika saya menjalankan proses migrasi, menghapus konten migrate.migration.cm_beers.ymldan menjalankan lagi proses, migrasi tidak gagal. Tampaknya di-cache konten file yaml di suatu tempat.
Ignacio Sánchez

Jawaban:

18

Saya menemukan ini bekerja untuk saya

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

Peter J Lord
sumber
Hai, di atas memberikan kesalahan berikut: Direktori sumber tidak ada. Sumbernya bukan direktori.
harshal
5

Ada modul untuk itu. Karena biasanya file yml hanya dimuat saat diinstal.

Modul ini memungkinkan Anda menentukan file konfigurasi modul apa yang diimpor secara otomatis.

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

Juga lihat posting blog ini: https://blog.liip.ch/archive/2016/05/04/using-the-new-drupal-8-migration-api-module.html

Mengembangkan modul Drupal 8 Anda sendiri memigrasi modul dan memerangi masalah caching

Anda telah belajar, bahwa seluruh pemetaan migrasi sekarang dilakukan dalam file yaml. Tapi bagaimana dengan menulis file migrasi yaml Anda sendiri?

Sayangnya, ada beberapa jebakan untuk pengembang Drupal 8 baru. Karena Antarmuka Manajemen Konfigurasi ( https://www.drupal.org/documentation/administer/config ) dari Drupal 8, semua file yml di direktori "config / install" hanya diimpor ketika menginstal modul.

Ini sangat tidak praktis jika Anda ingin mengembangkan file konfigurasi baru. Untuk mengatasinya, modul "Pengembangan Konfigurasi" ( https://www.drupal.org/project/config_devel ) yang menyelesaikan masalah caching dapat diinstal. Dimungkinkan untuk mengimpor file yml tertentu pada setiap permintaan. Namun sayangnya perintah drush belum didukung. Jadi kita perlu menambahkan semua file yaml yang ingin kita impor ke bagian baru di module.info.yml kita.

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

Kemudian kita dapat menjalankan perintah berikut setelah memperbarui file yml. Ini akan mengimpor file konfigurasi baru ke Antarmuka Manajemen Konfigurasi.

drush cdi <module_name>
drush cr
TERBANG
sumber
Saya tidak bisa mengaktifkan ini, dan dokumentasinya kurang. Bisakah Anda memberikan sedikit informasi? drupal.org/node/2845304
Michael Mallett
5

Migrasi harus di MODULENAME/migrationssubdirektori. Setelah memodifikasi konfigurasi migrasi, drush crcukup sederhana untuk menerapkan perubahan.

Deriver config akan mengubah konfigurasi migrasi kembali menjadi plugin migrasi.

Lihat catatan perubahan ini: Migrasi adalah plugin bukan entitas konfigurasi

mpp
sumber
2

Saya kesulitan dengan masalah yang sama: cara memperbarui konfigurasi migrasi selama pengembangan. Inilah yang akhirnya saya dapatkan:

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

config-devel-import-one, perintah ( cdi1singkatnya) dimaksudkan untuk mengimpor konfigurasi tunggal ke konfigurasi aktif. Ini adalah bagian dari modul config_devel yang disebutkan di atas.

Artreaktor
sumber
1

Saya tidak berhasil dengan solusi FLY. Harus uninstall juga migrate_tools, untuk mendapatkan yaml di-refresh. Dan tidak berhasil dengan devel_config.

Saya memang menemukan konfigurasi yang disegarkan ini:

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

Menindaklanjuti solusi Peter J Lord, Anda juga dapat menambahkan direktori config (untuk ymls baru atau yang diperbarui) ke file settings.php Anda. misalnya:

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

Tempatkan file yml baru di direktori itu dan kemudian impor pengaturan konfigurasi baru dengan perintah config-import drush:

drush cim fresh --partial 
edg
sumber
-1

Saya telah menemukan bahwa kadang-kadang tidak ada yang berhasil. Bahkan menggabungkan semuanya. Namun saya bisa menipu migrate_tools agar memberi saya wawasan.

Rupanya ada pemeriksaan apakah file yml valid sebelum terdaftar. Coba jalankan importir (ya, bahkan jika itu tidak muncul $ drush ms)

Migrasi saya disebut produk, jadi saya melakukannya: $ drush mim products

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

Memperbaiki kesalahan ini (mengubah int ke integer dalam kasus saya) dan kemudian mengikuti jawaban @ FLY di atas membuat migrasi muncul. Malu kesalahan tidak muncul dan hanya gagal diam-diam, tapi itu topik lain. ;-)

PS Saya akan memposting ini sebagai komentar, tetapi saya belum memiliki poin yang cukup.

firfin
sumber
-2

Dalam jawaban oleh FLY di atas, drush cdi <module_name>seharusnya sekarang drush cde <module_name>.

Carole
sumber
2
Cde drush mengekspor konfigurasi dan menimpa apa yang Anda miliki. Bukan itu yang kita inginkan. Bagaimana ini diterima?
Michael Mallett