È possibile chiamare una funzione all'interno di un file .inc di un modulo tramite drush eval?


12

Ho un modulo con file aggiuntivi (.inc) contenenti funzioni che devo eseguire tramite Drush. So che è possibile eseguire drush eval, ma quando provo a farlo per quelle funzioni ottengo il seguente errore:

Errore irreversibile PHP: chiamata alla funzione indefinita my_module_my_function () in /usr/share/php/drush/commands/core/core.drush.inc(1037): eval () 'd code on line 1

Questo comando funziona (la funzione si trova nel file .module).

drush eval 'my_module_cron();'

Questo comando non funziona (la funzione si trova nel file .inc).

drush eval 'my_module_my_function();'

C'è qualche soluzione alternativa, oltre a spostare la funzione nel modulo?


Il tuo file inc è incluso / richiesto nel file del modulo? o nel tuo file .info? Questo dovrebbe funzionare fintanto che drupal conosce il file inc da un file .info o è incluso / richiesto nel tuo file .module.
Beebee,

Risposte:


18

Puoi aggiungere module_load_include () al tuo codice di valutazione come faresti in qualsiasi altro luogo.

Come questo:

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

Funziona anche con i .installfile, ad esempio:drush eval "module_load_include('install', 'my_module', 'my_module); my_module_install();"
tanius

Questo non funziona per me. Ricevo Division by zero core.drush.inc(1168) : eval()'d code:1quando chiamo module_load_include.
mbomb007,

@ mbomb007: quale versione di drush stai usando e qual è il comando che stai eseguendo?
rooby

Non importa. Stavo usando lo stesso tipo di virgolette sia dentro che fuori. drush eval 'module_load_include('...
mbomb007,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.