Menggunakan ekstensi debug / mode pengembang perlindungan yang cukup

18

Ada beberapa ekstensi bagus untuk pengembang Magento yang biasanya tidak ingin Anda miliki di sistem live.

Bagaimana Anda bisa menyimpannya di repositori proyek tetapi menghindarinya agar tidak terpapar di toko langsung?

Alex
sumber

Jawaban:

20

Ada dua teknik yang relatif baru untuk melakukannya:

  • Gunakan modman sehingga Anda akan dapat mengontrol sendiri apa yang harus digunakan untuk setiap lingkungan. Ini berarti Anda modman deploy [name-of-dev-extension]hanya menjalankan di lingkungan dev Anda.

  • Gunakan magento-komposer dengan composer.jsonskenario yang berbeda untuk lingkungan yang berbeda. Dan cara yang lebih mudah adalah dengan menentukan ekstensi tersebut sebagai modul-dev dan kemudian menginstal proyek menggunakan --require-devsakelar pada mesin pengembangan Anda.

pengguna487772
sumber
1
+ satu untuk merujuk ke modman :) pilihan bagus
Toon Van Dooren
Bisakah Anda lebih menggambarkan bagaimana penyebaran spesifik lingkungan itu akan terlihat? Maksud saya di mana saya menyimpan daftar modul yang saya gunakan? Biasanya saya memiliki folder semua modul - dan sekali lagi saya harus memisahkan siaran langsung dan pengembangan.
Alex
@Alex: silakan lihat edit saya.
user487772
@Tim: terima kasih! Saya juga mengedit jawaban Anda sekarang.
Alex
@ Alex: Terima kasih. Saya tidak tahu ini :-)
user487772
10

Mereka biasanya dapat dinonaktifkan dengan nyaman dengan flag konfigurasi, sehingga mereka secara teknis aktif tetapi tidak melakukan apa-apa. Jika Anda mengatur tanda ini ke false di app/etc/local.xmlsistem live Anda, Anda akan baik-baik saja.

Fabian Schmengler
sumber
Ini adalah solusi yang bagus kecuali Anda ingin menyimpan local.xmlfile Anda di repo Anda. Yang mungkin merupakan kasus.
user487772
Jawaban yang bagus - local.xmlbiasanya tidak ada di repo
Alex
6

Lihat MageTrashApp yang dibuat di Magento Hackathon di Berlin baru-baru ini. Memungkinkan Anda untuk menonaktifkan modul melalui panel admin.

Karen Baker
sumber
5

Cara mudah untuk melakukan ini adalah, menonaktifkan modul di / etc / modules, mendorongnya, mengabaikan file secara lokal dan mengaktifkannya lagi.

Toon Van Dooren
sumber
Dalam hal ini Anda akan dibatasi untuk membuat modifikasi pada ekstensi file bootstrap (misalnya memodifikasi dependensi). Juga jika Anda akan memeriksa katakanlah pada mesin Anda yang lain, Anda harus membuat semua trik itu sekali lagi. Mungkin lebih nyaman dengan tim dari beberapa pengembang.
user487772
Jika Anda mengabaikan file secara lokal, satu-satunya hal yang harus dilakukan devs lain adalah mengaktifkannya lagi. Ini hanya membutuhkan beberapa detik saja.
Toon Van Dooren
Baik. Tapi kemudian mereka lagi-lagi harus mengabaikannya secara lokal. Dan ini untuk setiap ekstensi untuk setiap copy pekerjaan. Maksud saya solusi Anda pasti akan berhasil tetapi sedikit merepotkan.
user487772
benar, saya kira saya hanya melihatnya dari posisi saya, saya biasanya mengintegrasikan hanya 1 atau 2 alat dev :-)
Toon Van Dooren
3

Saya pikir cara terbaik untuk mengatasi hal ini adalah menjaga semua modul tersebut di codePool lokal dan menonaktifkan semua modul lokal secara langsung dengan baris ini di local.xml Anda:

    <disable_local_modules>true</disable_local_modules>

Atau Anda dapat melakukan "Nonaktifkan Modul Output" di backend di lingkungan langsung Anda. (Sistem -> Konfigurasi -> Tingkat Lanjut). Namun ini tidak sepenuhnya menonaktifkan modul. Tapi mungkin itu hanya cukup ingin Anda ingin menyembunyikannya.

Satu-satunya hal lain yang dapat saya pikirkan adalah menulis beberapa kode yang dapat melakukan ini. Periksa apakah itu dalam mode pengembang ( Mage::getIsDeveloperMode()) dan kemudian nonaktifkan modul. Saya menemukan beberapa detail lebih lanjut tentang mencapai ini di sini: /programming/6520634/magento-how-to-disable-module-programmatically

Rick Kuipers
sumber
Semua 3 solusi tidak cukup baik. Menonaktifkan localmodul akan memaksa Anda untuk memindahkan semua modul lain dari localcodePool ke communitydan juga melakukannya untuk semua ekstensi di masa depan. Menonaktifkan output modul seperti yang Anda katakan masih memungkinkan ekstensi berjalan memperlambat toko Anda. Dan solusi ke-3 akan membutuhkan modifikasi yang akan ditimpa dengan pembaruan ekstensi.
user487772
2
@Tim saya setuju, tentu saja. Seharusnya ada cara yang lebih baik untuk menangani hal ini, harus ada konfigurasi inti dari menonaktifkan / mengaktifkan modul saat dalam mode pengembangan.
Rick Kuipers
3

Saya biasanya hanya memasukkan mereka ke dalam lingkungan pengujian saya, tetapi tidak memeriksanya ke dalam sistem kontrol versi, misalnya dengan menggunakan .gitignorefile untuk mengecualikan mereka agar tidak dipertimbangkan untuk melakukan.

mpaepper
sumber
OP menekankan pada menjaga ekstensi dalam repositori.
user487772
1

Ada slide dalam konferensi Imagine 2011 oleh Erik Hansen. Dia menyatakan kode dalam slide seperti di bawah ini (untuk mode pengembang)

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

di sini adalah, Erik mengaktifkan pengaturan berdasarkan subdomain yang dapat Anda sesuaikan sendiri.

Oğuz Çelikdemir
sumber
apa hubungannya ini dengan modul untuk pengembangan?
Bryan Ruiz
Dear @bryan_ruiz, sistem Magento memeriksa MAGE_IS_DEVELOPER_MODE apakah aktif atau tidak. Lihat artikel Alan. Mode Pengembang Magento
Oğuz Çelikdemir
apa yang saya katakan adalah saya tidak mengerti bagaimana ini berhubungan dengan pertanyaan. mode pengembang tidak akan mengaktifkan atau menonaktifkan modul yang dia gunakan.
Bryan Ruiz
Bryan, seperti yang saya sebutkan dalam komentar saya, Anda dapat menyesuaikan kode itu sebagai permintaan Anda. Tentu saja, ide mentah tidak sesuai dengan permintaan. Misalnya, jika Anda menulis ekstensi tergantung pada parameter, Anda dapat memeriksa atau mengontrol cuplikan di atas!
Oğuz Çelikdemir