Чи можливо викликати функцію всередині .inc-файла модуля через drush eval?


12

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

Фатальна помилка PHP: виклик невизначеної функції my_module_my_function () в /usr/share/php/drush/commands/core/core.drush.inc(1037): код eval () 'у рядку 1

Ця команда працює (функція знаходиться у файлі .module).

drush eval 'my_module_cron();'

Ця команда не працює (функція знаходиться у файлі .inc).

drush eval 'my_module_my_function();'

Чи є якесь вирішення, крім переміщення функції в модулі?


Ваш файл inc включений / необхідний у файлі модуля? або у вашому файлі .info? Це має працювати до тих пір, поки drupal знає про файл inc з файлу .info або він включений / необхідний у вашому .module-файлі.
Beebee

Відповіді:


18

Ви можете додати module_load_include () до свого коду eval, як і де завгодно.

Подобається це:

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

@ mbomb007: яку версію друку ви використовуєте та яку команду виконайте?
рубіж

Не звертай уваги. Я використовував однотипні лапки як всередині, так і зовні. drush eval 'module_load_include('...
mbomb007
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.