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?


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.