Czy można wywołać funkcję w pliku .inc modułu za pomocą drush eval?

12

Mam moduł z dodatkowymi plikami (.inc) zawierającymi funkcje, które muszę uruchomić za pośrednictwem Drush. Wiem, że można uruchomić drush eval, ale kiedy próbuję to zrobić dla tych funkcji, pojawia się następujący błąd:

Błąd krytyczny PHP: Wywołanie niezdefiniowanej funkcji my_module_my_function () w /usr/share/php/drush/commands/core/core.drush.inc(1037): kod eval () w linii 1

To polecenie działa (funkcja znajduje się w pliku .module).

drush eval 'my_module_cron();'

To polecenie nie działa (funkcja znajduje się w pliku .inc).

drush eval 'my_module_my_function();'

Czy istnieje jakieś obejście oprócz przeniesienia funkcji w module?

Michał Przybylowicz
źródło
Czy Twój plik inc jest dołączony / wymagany w pliku modułu? lub w pliku .info? Powinno to działać tak długo, jak Drupal wie o pliku inc z pliku .info lub jest zawarty / wymagany w pliku .module.
Beebee,

Odpowiedzi:

18

Możesz dodać module_load_include () do swojego kodu ewaluacyjnego, tak jak zrobiłbyś to gdziekolwiek indziej.

Lubię to:

drush eval "module_load_include('inc', 'my_module', 'INCLUDE_FILE_NAME_WITHOUT_EXTENSION'); my_module_my_function();"
dureń
źródło
Działa również dla .installplików, na przykład:drush eval "module_load_include('install', 'my_module', 'my_module); my_module_install();"
tanius
To mi nie działa. Dostaję Division by zero core.drush.inc(1168) : eval()'d code:1kiedy dzwonię module_load_include.
mbomb007
@ mbomb007: jakiej wersji drush używasz i jakiej komendy używasz?
rooby
Nieważne. Używałem tego samego rodzaju cytatów zarówno wewnątrz, jak i na zewnątrz. drush eval 'module_load_include('...
mbomb007