¿Es posible llamar a una función dentro de un archivo .inc de un módulo a través de drush eval?


12

Tengo un módulo con archivos adicionales (.inc) que contienen funciones que necesito ejecutar a través de Drush. Sé que es posible ejecutarlo drush eval, pero cuando intento hacerlo para esas funciones me sale el siguiente error:

Error fatal de PHP: Llame a la función indefinida my_module_my_function () en /usr/share/php/drush/commands/core/core.drush.inc(1037): eval () 'd code en la línea 1

Este comando funciona (la función está en el archivo .module).

drush eval 'my_module_cron();'

Este comando no funciona (la función está en el archivo .inc).

drush eval 'my_module_my_function();'

¿Hay alguna solución alternativa, además de mover la función en el módulo?


¿Su archivo inc está incluido / requerido en el archivo del módulo? o en su archivo .info? Esto debería funcionar siempre que Drupal conozca el archivo inc de un archivo .info o esté incluido / requerido en su archivo .module.
Beebee

Respuestas:


18

Puede agregar module_load_include () a su código de evaluación como lo haría en cualquier otro lugar.

Me gusta esto:

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

También funciona para .installarchivos, por ejemplo:drush eval "module_load_include('install', 'my_module', 'my_module); my_module_install();"
tanius

Esto no funciona para mi. Me llega Division by zero core.drush.inc(1168) : eval()'d code:1cuando llamo module_load_include.
mbomb007

@ mbomb007: ¿qué versión de drush estás usando y cuál es el comando que estás ejecutando?
rooby

No importa. Estaba usando el mismo tipo de citas tanto por dentro como por fuera. drush eval 'module_load_include('...
mbomb007
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.