drush evalを介してモジュールの.incファイル内の関数を呼び出すことは可能ですか?


12

Drush経由で実行する必要がある関数を含む追加(.inc)ファイルを含むモジュールがあります。を実行することは可能drush evalですが、これらの関数に対して実行しようとすると、次のエラーが発生します。

PHPの致命的なエラー:/usr/share/php/drush/commands/core/core.drush.inc(1037)の未定義の関数my_module_my_function()の呼び出し:1行目のeval()のコード

このコマンドは機能します(関数は.moduleファイルにあります)。

drush eval 'my_module_cron();'

このコマンドは機能しません(関数は.incファイルにあります)。

drush eval 'my_module_my_function();'

モジュール内で関数を移動する以外に回避策はありますか?


あなたのincファイルはモジュールファイルに含まれていますか/必要ですか?またはあなたの.infoファイルに?drupalが.infoファイルからのincファイルを知っているか、.moduleファイルに含まれている/必要である限り、これは機能するはずです。
Beebee

回答:


18

他の場所と同じように、evalコードにmodule_load_include()を追加できます。

このような:

drush eval "module_load_include('inc', 'my_module', 'INCLUDE_FILE_NAME_WITHOUT_EXTENSION'); my_module_my_function();"

次の.install例のようにファイルでも機能しますdrush eval "module_load_include('install', 'my_module', 'my_module); my_module_install();"
。– tanius

これは私にはうまくいきません。私が取得Division by zero core.drush.inc(1168) : eval()'d code:1私が呼ぶときmodule_load_include
mbomb007 2018年

@ mbomb007:使用しているDrushのバージョンと実行しているコマンドは何ですか?
rooby

気にしないで。私は内側と外側の両方で同じタイプの引用符を使用していました。drush eval 'module_load_include('...
mbomb007 2018年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.