ใช้ส่วนขยาย debug / โหมดผู้พัฒนาเพียงพอในการป้องกัน


18

มีส่วนขยายที่ดีสำหรับนักพัฒนา Magento ที่โดยปกติแล้วคุณไม่ต้องการให้มีในระบบจริง

คุณจะเก็บมันไว้ในที่เก็บโครงการได้อย่างไร

คำตอบ:


20

มีสองเทคนิคที่ค่อนข้างใหม่ที่จะทำ:

  • ใช้modmanเพื่อให้คุณสามารถควบคุมได้ด้วยตัวเองว่าจะปรับใช้สำหรับแต่ละสภาพแวดล้อมอย่างไร นี่หมายความว่าคุณทำงานmodman deploy [name-of-dev-extension]ที่สภาพแวดล้อมการพัฒนาเท่านั้น

  • ใช้นักแต่งเพลงคุณภาพเยี่ยมกับcomposer.jsonสถานการณ์ที่แตกต่างกันสำหรับสภาพแวดล้อมที่แตกต่างกัน และวิธีที่ง่ายยิ่งขึ้นคือการระบุส่วนขยายเหล่านั้นเป็นโมดูล dev และติดตั้งโครงการโดยใช้--require-devสวิตช์บนเครื่องพัฒนาของคุณ


1
+ หนึ่งรายการสำหรับการอ้างอิงถึง modman :) ตัวเลือกที่ดี
Toon Van Dooren

คุณสามารถอธิบายเพิ่มเติมว่าการปรับใช้เฉพาะสภาพแวดล้อมนั้นมีลักษณะอย่างไร ฉันหมายถึงฉันจะเก็บรายการโมดูลที่ฉันปรับใช้ที่ไหน ฉันมักจะมีโฟลเดอร์ของโมดูลทั้งหมด - และดังนั้นฉันต้องแยกการถ่ายทอดสดและการพัฒนาอีกครั้ง
Alex

@Alex: โปรดดูการแก้ไขของฉัน
user487772

@Tim: ขอบคุณ! ฉันยังแก้ไขคำตอบของคุณตอนนี้
อเล็กซ์

@Alex: ขอบคุณ ฉันไม่ทราบ :-)
487772

10

สิ่งเหล่านี้มักจะสามารถปิดการใช้งานได้อย่างสะดวกสบายด้วยการกำหนดค่าธงดังนั้นพวกเขาจึงมีการใช้งานทางเทคนิค แต่ไม่ได้ทำอะไรเลย หากคุณตั้งค่าสถานะนี้เป็นเท็จในapp/etc/local.xmlระบบสดของคุณคุณควรจะปรับ


นี่เป็นทางออกที่ดีเว้นแต่คุณต้องการเก็บlocal.xmlไฟล์ไว้ใน repo ของคุณ ซึ่งอาจเป็นกรณี
487772

คำตอบที่ดี - local.xmlมักจะไม่อยู่ใน repo
Alex


5

วิธีง่ายๆในการทำเช่นนี้คือการปิดการใช้งานโมดูลใน / etc / modules ดันมันละเว้นไฟล์ในเครื่องและเปิดใช้งานอีกครั้ง


ในกรณีนี้คุณจะถูก จำกัด ในการแก้ไขไฟล์ bootstrap ส่วนขยาย (ตัวอย่างเช่นการแก้ไขการขึ้นต่อกัน) นอกจากนี้หากคุณจะตรวจสอบสมมติว่าในเครื่องอื่น ๆ ของคุณคุณจะต้องทำอัลเทคนิคเหล่านั้นอีกครั้ง อาจไม่สะดวกยิ่งขึ้นกับทีมนักพัฒนาหลายคน
487772

หากคุณไม่สนใจไฟล์ในเครื่องสิ่งเดียวที่ devs อื่น ๆ ต้องทำคือเปิดใช้งานอีกครั้ง ใช้เวลาเพียงไม่กี่วินาทีเท่านั้น
ตูนแวน Dooren

ขวา. แต่แล้วพวกเขาก็ต้องไม่สนใจมันในพื้นที่ และนี่คือส่วนขยายแต่ละรายการสำหรับสำเนาทำงานแต่ละอัน ฉันหมายความว่าวิธีแก้ปัญหาของคุณจะทำงานได้อย่างแน่นอน แต่ค่อนข้างไม่สะดวก
487772

จริงฉันเดาฉันแค่ดูจากตำแหน่งของฉันฉันมักจะรวมเพียง 1 หรือ 2 เครื่องมือ dev :-)
Toon Van Dooren

3

ฉันคิดว่าวิธีที่ดีที่สุดในการจัดการกับสิ่งนี้คือเก็บโมดูลเหล่านั้นทั้งหมดไว้ใน local codePool และปิดการใช้งานโมดูลโลคัลทั้งหมดบน live ด้วยบรรทัดนี้ใน local.xml ของคุณ:

    <disable_local_modules>true</disable_local_modules>

หรือคุณสามารถ "ปิดการใช้งานเอาท์พุทโมดูล" ในแบ็กเอนด์ในสภาพแวดล้อมที่มีชีวิตของคุณ (ระบบ -> การกำหนดค่า -> ขั้นสูง) อย่างไรก็ตามสิ่งนี้ไม่ได้ปิดใช้งานโมดูลทั้งหมด แต่บางทีมันก็เพียงพอแล้วที่คุณต้องการซ่อนมันไว้

สิ่งเดียวที่ฉันคิดได้ก็คือเขียนโค้ดที่สามารถดึงออกมาได้ เพียงตรวจสอบว่าอยู่ในโหมดนักพัฒนา ( Mage::getIsDeveloperMode()) จากนั้นปิดการใช้งานโมดูล ฉันพบรายละเอียดเพิ่มเติมเกี่ยวกับการบรรลุเป้าหมายได้ที่นี่: /programming/6520634/magento-how-to-disable-module-programmatically


โซลูชันทั้ง 3 ตัวนั้นไม่ดีพอ การปิดใช้งานlocalโมดูลจะบังคับให้คุณย้ายโมดูลอื่น ๆ ทั้งหมดจากlocalcodePool ไปcommunityยังและทำเพื่อส่วนขยายในอนาคตทั้งหมด ปิดการใช้งานโมดูลเอาท์พุทตามที่คุณบอกว่ายังอนุญาตให้ส่วนขยายทำงานช้าลงในร้านค้าของคุณ และโซลูชันที่ 3 จะต้องมีการแก้ไขที่จะถูกเขียนทับด้วยการอัปเดตส่วนขยาย
user487772

2
@Tim ฉันเห็นด้วยอย่างแน่นอน ควรมีวิธีที่ดีกว่าในการจัดการกับสิ่งนี้ควรมีการกำหนดค่าหลักของการปิดการใช้งาน / เปิดใช้งานโมดูลเมื่ออยู่ในโหมดการพัฒนา
Rick Kuipers

3

ฉันมักจะใส่พวกเขาลงในสภาพแวดล้อมการทดสอบของฉัน แต่อย่าตรวจสอบพวกเขาในระบบควบคุมเวอร์ชันเช่นโดยใช้.gitignoreไฟล์เพื่อแยกพวกเขาออกจากการพิจารณากระทำ


OP เน้นการรักษาส่วนขยายในที่เก็บ
487772

1

มีสไลด์ในการประชุม Imagine 2011 โดย Erik Hansen เขาระบุรหัสในสไลด์ซึ่งเป็นด้านล่าง (สำหรับโหมดนักพัฒนาซอฟต์แวร์)

# File : index.php
if(preg_match('/^stage\.|\.dev$/', $_SERVER['HTTP_HOST'])) {
   $_SERVER['MAGE_IS_DEVELOPER_MODE'] = true;
}

นี่คือ Erik เปิดใช้งานการตั้งค่าตามโดเมนย่อยซึ่งคุณสามารถกำหนดเองได้


สิ่งนี้เกี่ยวข้องกับโมดูลเพื่อการพัฒนาอย่างไร
ไบรอันรุยซ์

เรียน @bryan_ruiz ระบบ Magento กำลังตรวจสอบ MAGE_IS_DEVELOPER_MODE ไม่ว่าจะเปิดใช้งานหรือไม่ก็ตาม ตรวจสอบบทความของอลัน โหมดผู้พัฒนา Magento
OğuzÇelikdemir

สิ่งที่ฉันพูดคือฉันไม่เข้าใจว่าสิ่งนี้เกี่ยวข้องกับคำถามได้อย่างไร โหมดผู้พัฒนาจะไม่เปิดใช้งานหรือปิดใช้งานโมดูลที่เขาใช้
ไบรอันรุยซ์

ไบรอันตามที่ฉันระบุไว้ในความคิดเห็นของฉันคุณสามารถปรับแต่งรหัสตามคำขอของคุณ แน่นอนความคิดที่ไม่ตรงกับความต้องการ ตัวอย่างเช่นหากคุณเขียนส่วนขยายขึ้นอยู่กับพารามิเตอร์คุณสามารถตรวจสอบหรือควบคุมข้อมูลโค้ดด้านบน!
OğuzÇelikdemir
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.