Utiliser les extensions de débogage / le mode développeur suffisamment de protection


18

Il existe de belles extensions pour les développeurs de Magento que vous ne souhaitez généralement pas avoir sur un système en direct.

Comment pouvez-vous les conserver dans le référentiel du projet mais éviter qu'ils ne soient exposés sur une boutique en direct?

Réponses:


20

Il existe deux techniques relativement nouvelles pour le faire:

  • Utilisez modman pour pouvoir contrôler par vous-même ce qu'il faut déployer pour chaque environnement. Cela signifie que vous exécutez modman deploy [name-of-dev-extension]uniquement dans votre environnement de développement.

  • Utilisez magento-composer avec différents composer.jsonscénarios pour différents environnements. Et le moyen le plus simple consiste à spécifier ces extensions en tant que modules de développement, puis à installer le projet à l'aide du --require-devcommutateur sur votre machine de développement.


1
+ un pour reffering à modman :) belle option
Toon Van Dooren

Pouvez-vous décrire davantage à quoi ressemblerait ce déploiement spécifique à l'environnement? Je veux dire où dois-je conserver la liste des modules que je déploie? Habituellement, j'ai un dossier de tous les modules - et encore une fois, je dois séparer le live et le développement.
Alex

@Alex: veuillez voir ma modification.
user487772

@Tim: merci! J'ai également modifié votre réponse maintenant.
Alex

@Alex: Merci. Je ne savais pas cela :-)
user487772

10

Ceux-ci peuvent généralement être désactivés facilement avec un indicateur de configuration, ils sont donc techniquement actifs mais ne font rien. Si vous définissez ce drapeau sur false dans app/etc/local.xmlvotre système en direct, cela devrait aller.


C'est une bonne solution, sauf si vous souhaitez conserver votre local.xmlfichier dans votre référentiel. Ce qui pourrait être un cas.
user487772

Grande réponse - local.xmln'est généralement pas dans le repo
Alex

6

Voir MageTrashApp qui a été créé récemment au Magento Hackathon de Berlin. Vous permet de désactiver les modules via le panneau d'administration.


5

Une façon simple de le faire est de désactiver le module dans / etc / modules, de le pousser, d'ignorer le fichier localement et de le réactiver.


Dans ce cas, vous serez limité à apporter des modifications au fichier d'amorçage des extensions (par exemple, la modification des dépendances). De plus, si vous vérifiez, disons que sur votre autre machine, vous devrez refaire toutes ces astuces. Cela pourrait être encore plus gênant avec une équipe de plusieurs développeurs.
user487772

Si vous ignorez le fichier localement, la seule chose que les autres développeurs doivent faire est de le réactiver. Cela ne prend que quelques secondes à mon humble avis.
Toon Van Dooren

Droite. Mais ils doivent à nouveau l'ignorer localement. Et c'est pour chaque extension pour chaque copie de travail. Je veux dire que votre solution fonctionnera certainement mais est un peu gênante.
user487772

vrai, je suppose que je viens de le regarder depuis ma position, je n'intègre généralement que 1 ou 2 outils de développement :-)
Toon Van Dooren

3

Je pense que la meilleure façon de gérer cela est de conserver tous ces modules dans le codePool local et de désactiver tous les modules locaux en direct avec cette ligne dans votre local.xml:

    <disable_local_modules>true</disable_local_modules>

Ou vous pouvez faire "Désactiver la sortie du module" dans le backend de votre environnement en direct. (Système -> Configuration -> Avancé). Cependant, cela ne désactive pas entièrement le module. Mais peut-être que c'est juste assez de vouloir que vous vouliez vous en cacher.

La seule autre chose à laquelle je peux penser est d'écrire du code qui peut le faire. Vérifiez simplement s'il est en mode développeur ( Mage::getIsDeveloperMode()), puis désactivez les modules. J'ai trouvé plus de détails pour y parvenir ici: /programming/6520634/magento-how-to-disable-module-programmatically


Les 3 solutions ne sont pas assez bonnes. La désactivation des localmodules vous obligera à déplacer tous les autres modules de localcodePool vers communityet à le faire également pour toutes les extensions futures. La désactivation de la sortie des modules comme vous l'avez dit permet toujours à l'extension de ralentir votre magasin. Et la 3ème solution nécessitera des modifications qui seront écrasées avec la mise à jour des extensions.
user487772

2
@Tim Je suis d'accord, absolument. Il devrait y avoir une meilleure façon de gérer cela, il devrait y avoir une configuration de base de désactivation / activation des modules en mode développement.
Rick Kuipers

3

Je les place généralement dans mon environnement de test, mais je ne les vérifie pas dans le système de contrôle de version, par exemple en utilisant le .gitignorefichier pour les exclure de la prise en compte pour la validation.


OP a mis l'accent sur le maintien des extensions dans le référentiel.
user487772

1

Il y a une diapositive dans la conférence Imagine 2011 d'Erik Hansen. Il a indiqué un code dans la diapositive qui est comme ci-dessous (pour le mode développeur)

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

voici, Erik active un paramètre basé sur les sous-domaines que vous pouvez personnaliser vous-même.


qu'est-ce que cela a à voir avec les modules de développement?
Bryan Ruiz

Cher @bryan_ruiz, le système Magento vérifie si le MAGE_IS_DEVELOPER_MODE est actif ou non. Consultez l'article d'Alan. Mode développeur Magento
Oğuz Çelikdemir

ce que je dis, c'est que je ne comprends pas comment cela se rapporte à la question. le mode développeur ne permet pas d'activer ou de désactiver les modules qu'il utilise.
Bryan Ruiz

Bryan, comme je l'ai précisé dans mon commentaire, vous pouvez personnaliser le code en tant que votre demande. Bien sûr, l'idée brute ne correspond pas à la demande. Par exemple, si vous avez écrit votre extension dépend d'un paramètre, vous pouvez vérifier ou contrôler l'extrait ci-dessus!
Oğuz Çelikdemir
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.