Drupal 8移行モジュールで新しい移行を更新する方法は?


10

Drupal 8移行プロセスを作成するとき、カスタム移行モジュールを再インストールした場合にのみ、新しい移行プロセスを更新できます。drush crが機能しません。

説明:

私には1つのモジュールがあります。つまりcm_migrations、2つのマイグレーションがある:

  • cm_users
  • cm_tags

drush ms私は以下を参照してください。

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

実行するdrush cr; drush msと、前と同じテーブルが表示されます。

アンインストールしてインストールしたときにのみcm_migrations、3つの移行プロセスを確認できます。

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              

モジュールを再インストールせずに移行プロセスを更新する方法についての手がかりはありますか?

ありがとう


また、移行処理を実行し、内容を削除してmigrate.migration.cm_beers.yml再度実行すれば、移行は失敗しないと言えます。yamlファイルのコンテンツがどこかにキャッシュされているようです。
IgnacioSánchez2016

回答:


18

私はこれが私のために働いたことを発見しました

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


こんにちは、上記は次のエラーを出します:ソースディレクトリが存在しません。ソースはディレクトリではありません。
19

5

そのためのモジュールがあります。通常、ymlファイルはインストール時にのみロードされます。

このモジュールでは、自動的にインポートされるモジュール構成ファイルを定義できます。

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

次のブログ投稿もご覧くださいhttps : //blog.liip.ch/archive/2016/05/04/using-the-new-drupal-8-migration-api-module.html

独自のDrupal 8を開発してモジュールを移行し、キャッシュの問題に対処する

これで、移行マッピング全体がyamlファイルで行われるようになりました。しかし、独自の移行yamlファイルを作成するのはどうですか?

残念ながら、新しいDrupal 8開発者にはいくつかの落とし穴があります。Drupal 8 の構成管理インターフェース(https://www.drupal.org/documentation/administer/config)により、「config / install」ディレクトリ内のすべてのymlファイルは、モジュールのインストール時にのみインポートされます。

これは、新しい構成ファイルを開発する場合には非常に非現実的です。これに対処するには、キャッシュの問題を解決するモジュール「構成開発」(https://www.drupal.org/project/config_devel)をインストールできます。すべてのリクエストで特定のymlファイルをインポートすることが可能です。ただし、残念ながら、drushコマンドはまだサポートされていません。したがって、module.info.ymlの新しいセクションにインポートするすべてのyamlファイルを追加する必要があります。

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

次に、ymlファイルを更新した後、次のコマンドを実行します。これにより、新しい構成ファイルが構成管理インターフェースにインポートされます。

drush cdi <module_name>
drush cr

これを機能させることができず、ドキュメントが不足しています。もう少し情報を提供できますか? drupal.org/node/2845304
マイケルマレット


2

私は同じ問題、つまり開発中に移行構成を更新する方法に苦労していました。これが私が終わったものです:

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

config-devel-import-one、コマンド(cdi1略して)は、アクティブな構成に単一の構成をインポートすることを目的としています。上記のconfig_develモジュールの一部です。


1

FLYのソリューションでは成功しませんでした。yamlを更新するには、migrate_toolsもアンインストールする必要がありました。そして、運はありませんdevel_config

私はこの更新された構成を見つけました:

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

0

Peter J Lordのソリューションのフォローアップとして、(新規または更新されたymls用の)configディレクトリーをsettings.phpファイルに追加することもできます。例えば:

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

そのディレクトリに新しいymlファイルを配置し、drushのconfig-importコマンドを使用して新しい構成設定をインポートします。

drush cim fresh --partial 

-1

上記のいずれもうまくいかない場合があることを発見しました。それらをすべて組み合わせても。しかし、migrate_toolsをだまして、洞察を与えることができます。

表示される前に、ymlファイルが有効かどうかのチェックがあるようです。インポーターを実行してみてください(はい、それがで表示されない場合でも$ drush ms

私の移行は製品と呼ばれていたので、私はそうしました: $ drush mim products

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

この障害を修正し(私の場合はintを整数に変更)、次に上記の@FLYの回答に従うと、移行が表示されました。恥ずかしいことに、エラーは表示されず、静かに失敗しましたが、それは別のトピックです。;-)

PS私はこれをコメントとして投稿したでしょうが、まだ十分なポイントがありません。


-2

上記のFLYによる回答でdrush cdi <module_name>は、になりますdrush cde <module_name>


2
drush cdeは設定をエクスポートし、既存のものを上書きします。それは私たちが望んでいることではありません。これはどのように受け入れられますか?
マイケルマレット2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.