Utilizzando estensioni di debug / modalità sviluppatore abbastanza protezione


18

Ci sono alcune belle estensioni per gli sviluppatori Magento che di solito non vuoi avere su un sistema live.

Come puoi tenerli nel repository del progetto ma evitarli di essere esposti in un negozio dal vivo?

Risposte:


20

Ci sono due tecniche relativamente nuove per farlo:

  • Usa modman in modo da poter controllare da solo cosa distribuire per ogni ambiente. Questo significa che corri modman deploy [name-of-dev-extension]solo nel tuo ambiente di sviluppo.

  • Usa magento-compositore con composer.jsonscenari diversi per ambienti diversi. E il modo ancora più semplice è specificare quelle estensioni come moduli di sviluppo e quindi installare il progetto usando l' --require-devinterruttore sulla macchina di sviluppo.


1
+ uno per riferirsi a modman :) bella opzione
Toon Van Dooren il

Puoi descrivere di più come sarebbe quella distribuzione specifica per ambiente? Voglio dire, dove posso conservare l'elenco dei moduli che distribuisco? Di solito ho una cartella di tutti i moduli - e quindi devo separare live e sviluppo.
Alex

@Alex: per favore vedi la mia modifica.
user487772

@Tim: grazie! Ho anche modificato la tua risposta ora.
Alex

@Alex: grazie. Non lo sapevo :-)
user487772

10

Questi di solito possono essere disabilitati comodamente con un flag di configurazione, quindi sono tecnicamente attivi ma non fanno nulla. Se imposti questo flag su false nel app/etc/local.xmltuo sistema live, dovresti andare bene.


Questa è una buona soluzione a meno che non si desideri conservare il local.xmlfile nel repository. Quale potrebbe essere un caso.
user487772

Ottima risposta - di local.xmlsolito non è nel repository
Alex

6

Guarda MageTrashApp che è stata creata recentemente al Magento Hackathon di Berlino. Consente di disattivare i moduli tramite il pannello di amministrazione.


5

Un modo semplice per farlo è disabilitare il modulo in / etc / modules, spingerlo, ignorare il file localmente e abilitarlo di nuovo.


In questo caso ti limiterai ad apportare modifiche al file bootstrap delle estensioni (ad esempio modificando le dipendenze). Inoltre, se verifichi, diciamo sull'altra macchina che dovrai ripetere tutti questi trucchi. Potrebbe essere ancora più scomodo con un team di diversi sviluppatori.
user487772

Se ignori il file localmente, l'unica cosa che gli altri sviluppatori devono fare è abilitarlo di nuovo. Questo richiede solo pochi secondi.
Toon Van Dooren,

Giusto. Ma poi devono di nuovo ignorarlo localmente. E questo è per ogni estensione per ogni copia di lavoro. Voglio dire, la tua soluzione funzionerà sicuramente, ma è un po 'scomoda.
user487772

vero, immagino di averlo appena visto dalla mia posizione, di solito integra solo 1 o 2 strumenti di sviluppo :-)
Toon Van Dooren

3

Penso che il modo migliore per affrontare questo sia quello di mantenere tutti quei moduli nel codePool locale e disabilitare tutti i moduli locali in diretta con questa linea nel tuo local.xml:

    <disable_local_modules>true</disable_local_modules>

Oppure puoi fare "Disabilita output modulo" nel back-end nel tuo ambiente live. (Sistema -> Configurazione -> Avanzate). Tuttavia, questo non disabilita del tutto il modulo. Ma forse è abbastanza per volerlo nascondere.

L'unica altra cosa a cui riesco a pensare è scrivere del codice che può farcela. Basta controllare se è in modalità sviluppatore ( Mage::getIsDeveloperMode()) e quindi disabilitare i moduli. Ho trovato qualche dettaglio in più su come raggiungere questo qui: /programming/6520634/magento-how-to-disable-module-programmmatic


Tutte e 3 le soluzioni non sono abbastanza buone. La disabilitazione dei localmoduli ti costringerà a spostare tutti gli altri moduli da localcodePool in communitye lo farà anche per tutte le future estensioni. La disabilitazione dell'output dei moduli, come hai detto, consente comunque all'estensione di rallentare il tuo negozio. E la terza soluzione richiederà modifiche che verranno sovrascritte con l'aggiornamento delle estensioni.
user487772

2
@Tim sono assolutamente d'accordo. Dovrebbe esserci un modo migliore di gestirlo, dovrebbe esserci una configurazione di base di disabilitazione / abilitazione dei moduli in modalità di sviluppo.
Rick Kuipers,

3

Di solito li inserisco nel mio ambiente di test, ma non li controllo nel sistema di controllo della versione, ad esempio utilizzando il .gitignorefile per escluderli dall'essere presi in considerazione per il commit.


OP ha sottolineato il mantenimento delle estensioni nel repository.
user487772

1

C'è una diapositiva nella conferenza Imagine 2011 di Erik Hansen. Ha dichiarato un codice nella diapositiva che è come di seguito (per la modalità sviluppatore)

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

ecco, Erik abilita un'impostazione basata sui sottodomini che puoi personalizzare tu stesso.


cosa c'entra questo con i moduli per lo sviluppo?
Bryan Ruiz,

Caro @bryan_ruiz, il sistema Magento controlla che MAGE_IS_DEVELOPER_MODE sia attivo o meno. Controlla l'articolo di Alan. Modalità sviluppatore Magento
Oğuz Çelikdemir,

quello che sto dicendo è che non capisco come questo si collega alla domanda. la modalità sviluppatore non abiliterà o disabiliterà i moduli che sta usando.
Bryan Ruiz,

Bryan, come ho specificato nel mio commento, puoi personalizzare il codice come tua richiesta. Naturalmente, l'idea grezza non si adatta alla richiesta. Ad esempio, se hai scritto l'estensione dipende da un parametro, puoi controllare o controllare lo snippet sopra!
Oğuz Çelikdemir,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.