เป็นไปได้ที่จะเรียกใช้ฟังก์ชั่นภายในไฟล์. inc ของโมดูลผ่าน drush eval หรือไม่?


12

ฉันมีโมดูลที่มีไฟล์ (.inc) เพิ่มเติมซึ่งมีฟังก์ชั่นที่ฉันต้องเรียกใช้ผ่าน Drush ฉันรู้ว่ามันเป็นไปได้ที่จะทำงานdrush evalแต่เมื่อฉันพยายามที่จะทำเพื่อฟังก์ชั่นเหล่านั้นฉันได้รับข้อผิดพลาดต่อไปนี้:

ข้อผิดพลาดร้ายแรงของ PHP: การเรียกไปยังฟังก์ชันที่ไม่ได้กำหนด my_module_my_function () ใน /usr/share/php/drush/commands/core/core.drush.inc(1037): รหัส eval () '' ที่บรรทัด 1

คำสั่งนี้ใช้งานได้ (ฟังก์ชั่นนี้อยู่ในไฟล์. โมดูล)

drush eval 'my_module_cron();'

คำสั่งนี้ไม่ทำงาน (ฟังก์ชั่นอยู่ในไฟล์. inc)

drush eval 'my_module_my_function();'

มีวิธีแก้ปัญหาอื่นนอกจากการย้ายฟังก์ชั่นในโมดูลหรือไม่?


ไฟล์ inc ของคุณรวมอยู่ / จำเป็นในไฟล์โมดูลหรือไม่? หรือในไฟล์. info ของคุณ สิ่งนี้จะทำงานได้ตราบใดที่ drupal รู้เกี่ยวกับไฟล์ inc จากไฟล์. info หรือมีอยู่ในไฟล์. mod ของคุณ
Beebee

คำตอบ:


18

คุณสามารถเพิ่มmodule_load_include ()ลงในโค้ด eval ของคุณเหมือนกับที่คุณทำที่อื่น

แบบนี้:

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

ใช้ได้กับ.installไฟล์เช่น:drush eval "module_load_include('install', 'my_module', 'my_module); my_module_install();"
tanius

มันไม่ได้ผลสำหรับฉัน ฉันได้รับเมื่อฉันโทรDivision by zero core.drush.inc(1168) : eval()'d code:1 module_load_include
mbomb007

@ mbomb007: คุณใช้ drush รุ่นใดและคำสั่งที่คุณใช้อยู่คืออะไร
rooby

ไม่เป็นไร. ฉันใช้เครื่องหมายคำพูดประเภทเดียวกันทั้งด้านในและด้านนอก drush eval 'module_load_include('...
mbomb007
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.