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?


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();"

.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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.