Можно ли вызвать функцию внутри файла .inc модуля через drush eval?

12

У меня есть модуль с дополнительными (.inc) файлами, содержащими функции, которые мне нужно запустить через Drush. Я знаю, что можно запустить drush eval, но когда я пытаюсь сделать это для этих функций, я получаю следующую ошибку:

Неустранимая ошибка PHP: вызов неопределенной функции my_module_my_function () в /usr/share/php/drush/commands/core/core.drush.inc(1037): eval () код d в строке 1

Эта команда работает (функция находится в файле .module).

drush eval 'my_module_cron();'

Эта команда не работает (функция находится в файле .inc).

drush eval 'my_module_my_function();'

Есть ли обходной путь, кроме перемещения функции в модуле?

Михал Пжибылович
источник
Ваш файл inc включен / требуется в файле модуля? или в вашем .info файле? Это должно работать, пока drupal знает о файле inc из файла .info или он включен / требуется в вашем файле .module.
Биби

Ответы:

18

Вы можете добавить module_load_include () в свой eval-код, как и везде.

Как это:

drush eval "module_load_include('inc', 'my_module', 'INCLUDE_FILE_NAME_WITHOUT_EXTENSION'); my_module_my_function();"
rooby
источник
Также работает для .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
@ mbomb007: какую версию drush вы используете и какую команду используете?
Роби
Ничего. Я использовал одинаковые кавычки как внутри, так и снаружи. drush eval 'module_load_include('...
mbomb007