Est-il possible d'appeler une fonction dans un fichier .inc d'un module via drush eval?

12

J'ai un module avec des fichiers supplémentaires (.inc) contenant des fonctions que je dois exécuter via Drush. Je sais qu'il est possible de s'exécuter drush eval, mais lorsque j'essaie de le faire pour ces fonctions, j'obtiens l'erreur suivante:

Erreur fatale PHP: appel à la fonction non définie my_module_my_function () dans /usr/share/php/drush/commands/core/core.drush.inc(1037): eval () 'd code sur la ligne 1

Cette commande fonctionne (la fonction se trouve dans le fichier .module).

drush eval 'my_module_cron();'

Cette commande ne fonctionne pas (la fonction se trouve dans le fichier .inc).

drush eval 'my_module_my_function();'

Existe-t-il une solution de contournement, outre le déplacement de la fonction dans le module?

Michal Przybylowicz
la source
Votre fichier inc est-il inclus / requis dans le fichier du module? ou dans votre fichier .info? Cela devrait fonctionner tant que drupal connaît le fichier inc à partir d'un fichier .info ou qu'il est inclus / requis dans votre fichier .module.
Beebee

Réponses:

18

Vous pouvez ajouter module_load_include () à votre code d' évaluation comme vous le feriez ailleurs.

Comme ça:

drush eval "module_load_include('inc', 'my_module', 'INCLUDE_FILE_NAME_WITHOUT_EXTENSION'); my_module_my_function();"
rooby
la source
.installdrush eval "module_load_include('install', 'my_module', 'my_module); my_module_install();"
Fonctionne
Ça ne marche pas pour moi. Je reçois Division by zero core.drush.inc(1168) : eval()'d code:1quand j'appelle module_load_include.
mbomb007
@ mbomb007: quelle version de drush utilisez-vous et quelle est la commande que vous exécutez?
rooby
Ça ne fait rien. J'utilisais le même type de citations à l'intérieur qu'à l'extérieur. drush eval 'module_load_include('...
mbomb007