É possível chamar uma função dentro de um arquivo .inc de um módulo via drush eval?


12

Eu tenho um módulo com arquivos adicionais (.inc) contendo funções que eu preciso executar via Drush. Eu sei que é possível executar drush eval, mas quando tento fazer isso para essas funções, recebo o seguinte erro:

Erro fatal do PHP: Chame a função indefinida my_module_my_function () em /usr/share/php/drush/commands/core/core.drush.inc(1037): código eval () 'na linha 1

Este comando funciona (a função está no arquivo .module).

drush eval 'my_module_cron();'

Este comando não funciona (a função está no arquivo .inc).

drush eval 'my_module_my_function();'

Existe alguma solução alternativa, além de mover a função no módulo?


Seu arquivo inc está incluído / é necessário no arquivo do módulo? ou no seu arquivo .info? Isso deve funcionar desde que o drupal conheça o arquivo inc a partir de um arquivo .info ou esteja incluído / exigido no arquivo .module.
Beebee

Respostas:


18

Você pode adicionar module_load_include () ao seu código de avaliação, como faria em qualquer outro lugar.

Como isso:

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

Também funciona para .installarquivos, por exemplo:drush eval "module_load_include('install', 'my_module', 'my_module); my_module_install();"
tanius 28/03

Isso não funciona para mim. Eu recebo Division by zero core.drush.inc(1168) : eval()'d code:1quando ligo module_load_include.
mbomb007

@ mbomb007: qual versão do drush você está usando e qual é o comando que está executando?
ROOBY

Deixa pra lá. Eu estava usando o mesmo tipo de citações por dentro e por fora. drush eval 'module_load_include('...
mbomb007
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.