Ist es möglich, eine Funktion in einer .inc-Datei eines Moduls über drush eval aufzurufen?

12

Ich habe ein Modul mit zusätzlichen (.inc) Dateien, die Funktionen enthalten, die ich über Drush ausführen muss. Ich weiß, dass es möglich ist, ausgeführt zu werden drush eval, aber wenn ich versuche, dies für diese Funktionen zu tun, wird der folgende Fehler angezeigt:

Schwerwiegender PHP-Fehler: Aufruf der undefinierten Funktion my_module_my_function () in /usr/share/php/drush/commands/core/core.drush.inc(1037): eval () 'd Code in Zeile 1

Dieser Befehl funktioniert (die Funktion befindet sich in der .module-Datei).

drush eval 'my_module_cron();'

Dieser Befehl funktioniert nicht (die Funktion befindet sich in der .inc-Datei).

drush eval 'my_module_my_function();'

Gibt es eine Problemumgehung, außer die Funktion im Modul zu verschieben?

Michal Przybylowicz
quelle
Ist Ihre inc-Datei in der Moduldatei enthalten / erforderlich? oder in deiner .info Datei? Dies sollte funktionieren, solange drupal die inc-Datei aus einer .info-Datei kennt oder sie in Ihrer .module-Datei enthalten / erforderlich ist.
Beebee

Antworten:

18

Sie können module_load_include () wie überall zu Ihrem Evaluierungscode hinzufügen .

So was:

drush eval "module_load_include('inc', 'my_module', 'INCLUDE_FILE_NAME_WITHOUT_EXTENSION'); my_module_my_function();"
Rooby
quelle
Funktioniert auch für .installDateien, zum Beispiel:drush eval "module_load_include('install', 'my_module', 'my_module); my_module_install();"
Tanius
Das funktioniert bei mir nicht. Ich bekomme, Division by zero core.drush.inc(1168) : eval()'d code:1wenn ich anrufe module_load_include.
mbomb007
@ mbomb007: Welche Version von Drush verwenden Sie und welchen Befehl führen Sie aus?
Rooby
Keine Ursache. Ich habe innen und außen die gleiche Art von Anführungszeichen verwendet. drush eval 'module_load_include('...
mbomb007