Hata ayıklama uzantılarını / geliştirici modunu yeterince koruma kullanma


18

Magento geliştiricileri için genellikle canlı bir sistemde olmasını istemediğiniz bazı güzel uzantılar var.

Onları proje deposunda nasıl tutabilirsiniz, ancak canlı bir dükkanda gösterilmelerini nasıl önleyebilirsiniz?

Yanıtlar:


20

Bunu yapmak için nispeten yeni iki teknik vardır:

  • Modman kullanın, böylece her ortam için neyi dağıtacağınızı kendiniz kontrol edebilirsiniz. Bu, modman deploy [name-of-dev-extension]yalnızca geliştirme ortamınızda çalıştığınız anlamına gelir .

  • Farklı ortamlar için farklı senaryolara sahip magento-besteci kullanın composer.json. Ve daha da kolay bir yol, bu uzantıları dev-modülleri olarak belirtmek ve ardından projeyi --require-devgeliştirme makinenizdeki anahtarı kullanarak yüklemektir .


1
+ modman'a sevkıyat için bir tane :) güzel seçenek
Toon Van Dooren

Çevreye özgü dağıtımın nasıl görüneceğini daha fazla anlatabilir misiniz? Yani dağıttığım modüllerin listesini nerede tutuyorum? Genellikle tüm modüllerin bir klasörü var - ve bu yüzden canlı ve gelişmeyi ayırmak zorundayım.
Alex

@Alex: lütfen düzenlememe bakın.
user487772

@Tim: teşekkürler! Şimdi cevabınızı da düzenledim.
Alex

@Alex: Teşekkürler. Bunu bilmiyordum :-)
user487772 7:30 '

10

Bunlar genellikle bir yapılandırma bayrağıyla kolayca devre dışı bırakılabilir, bu nedenle teknik olarak aktiftirler, ancak hiçbir şey yapmazlar. Bu bayrağı app/etc/local.xmlcanlı sisteminizde false olarak ayarlarsanız , iyi olmalısınız.


local.xmlDosyanızı deponuzda tutmak istemiyorsanız bu iyi bir çözümdür . Bu bir durum olabilir.
user487772

Büyük cevap - local.xmlgenellikle depoda değil
Alex

6

Son zamanlarda Berlin'deki Magento Hackathon'da yaratılan MageTrashApp'a bakın . Yönetici panelinden modülleri devre dışı bırakmanızı sağlar.


5

Bunu yapmanın basit bir yolu, / etc / modülleri içindeki modülü devre dışı bırakmak, itmek, dosyayı yerel olarak yok saymak ve yeniden etkinleştirmektir.


Bu durumda, uzantılar bootstrap dosyasında değişiklik yapmakla sınırlı kalacaksınız (örneğin, bağımlılıkları değiştirmek). Ayrıca kontrol ederseniz, diğer makinenizde diyelim ki bu hileleri bir kez daha yapmanız gerekecek. Birkaç geliştiriciden oluşan bir ekiple daha da rahatsız edici olabilir.
user487772

Dosyayı yerel olarak yoksayarsanız, diğer geliştiricilerin tek yapması gereken şey yeniden etkinleştirmektir. Bu sadece birkaç saniye sürer imho.
Toon Van Dooren

Sağ. Ama sonra tekrar yerel olarak görmezden gelmek zorundalar. Ve bu her çalışan kopya için her uzantı için geçerlidir. Yani çözümünüz kesinlikle işe yarayacak ama biraz rahatsız edici.
user487772

doğru, sanırım ben sadece benim pozisyondan baktım, genellikle sadece 1 veya 2 dev araçları entegre :-)
Toon Van Dooren

3

Ben bununla başa çıkmak için en iyi yolu ya yerel codePool tüm bu modülleri tutmak ve local.xml bu satırda canlı tüm yerel modülleri devre dışı bırakmak olduğunu düşünüyorum:

    <disable_local_modules>true</disable_local_modules>

Ya da canlı ortamınızın arka ucunda "Modül Çıkışını Devre Dışı Bırak" seçeneğini kullanabilirsiniz. (Sistem -> Yapılandırma -> Gelişmiş). Ancak bu, modülü tamamen devre dışı bırakmaz. Ama belki de saklamak istemeniz yeterlidir.

Aklıma gelen tek şey, bunu çekebilecek bir kod yazmak. Sadece geliştirici modunda ( Mage::getIsDeveloperMode()) olup olmadığını kontrol edin ve modülleri devre dışı bırakın . Bunu başarmak için burada daha fazla ayrıntı buldum: /programming/6520634/magento-how-to-disable-module-programmatically


Her 3 çözüm de yeterince iyi değil. localModülleri devre dışı bırakmak , diğer tüm modülleri localcodePool'dan taşımaya communityve gelecekteki tüm uzantılar için yapmaya zorlar . Dediğiniz gibi modül çıkışını devre dışı bırakmak, uzantı çalışmasının mağazanızı yavaşlatmasına izin verir. Ve 3. çözüm, uzantı (lar) güncellemesi ile üzerine yazılacak değişiklikler gerektirecektir.
user487772

2
@ Kesinlikle katılıyorum, kesinlikle. Bununla başa çıkmanın daha iyi bir yolu olmalı, geliştirme modundayken modüllerin devre dışı bırakılması / etkinleştirilmesi için temel bir yapılandırma olmalıdır.
Rick Kuipers

3

Genellikle onları test ortamımın içine koyarım, ancak bunları sürüm denetimi sistemine kontrol etmemem, örneğin .gitignoredosyayı işlemek için düşünülmesini engellemek için dosyayı kullanarak .


OP, uzantıları depoda tutmaya vurgu yaptı.
user487772

1

Erik Hansen'in Imagine 2011 konferansında bir slayt var. Slaytta aşağıdaki gibi bir kod belirtti (geliştirici modu için)

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

İşte Erik, alt alanlara dayalı bir ayarı kendi kendinize özelleştirebileceğiniz şekilde etkinleştirir.


bunun geliştirme modülleriyle ne ilgisi var?
Bryan Ruiz

Sevgili @bryan_ruiz, Magento sistemi aktif olsun ya da olmasın MAGE_IS_DEVELOPER_MODE'u kontrol ediyor. Alan'ın makalesine bakın. Magento Geliştirici Modu
Oğuz Çelikdemir

ne dediğim bu soru ile nasıl ilgili olduğunu anlamıyorum. geliştirici modu kullandığı modülleri etkinleştirmez veya devre dışı bırakmaz.
Bryan Ruiz

Bryan, yorumumda belirttiğim gibi, isteğiniz olarak kodu özelleştirebilirsiniz. Elbette, ham fikir talebe uymuyor. Örneğin, uzantınızın bir parametreye bağlı olduğunu yazdıysanız, yukarıdaki snippet'i kontrol edebilir veya kontrol edebilirsiniz!
Oğuz Çelikdemir
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.