Die Verwendung von Debug-Erweiterungen / Entwicklermodus bietet ausreichenden Schutz

18

Es gibt einige nette Erweiterungen für Magento-Entwickler, die Sie normalerweise nicht auf einem Live-System haben möchten.

Wie können Sie sie im Projektarchiv aufbewahren, aber vermeiden, dass sie in einem Live-Shop veröffentlicht werden?

Alex
quelle

Antworten:

20

Es gibt zwei relativ neue Techniken, um dies zu tun:

  • Verwenden Sie modman, damit Sie selbst steuern können, was für jede Umgebung bereitgestellt werden soll. Dies bedeutet, dass Sie modman deploy [name-of-dev-extension]nur in Ihrer Entwicklungsumgebung ausgeführt werden.

  • Verwenden Sie magento-composer mit verschiedenen composer.jsonSzenarien für verschiedene Umgebungen. Noch einfacher ist es, diese Erweiterungen als --require-devEntwicklungsmodule anzugeben und das Projekt dann über den Schalter auf Ihrem Entwicklungscomputer zu installieren .

user487772
quelle
1
+ eins für das reffering zu modman :) nette option
Toon Van Dooren
Können Sie genauer beschreiben, wie diese umgebungsspezifische Bereitstellung aussehen würde? Ich meine, wo behalte ich die Liste der Module, die ich bereitstelle? Normalerweise habe ich einen Ordner mit allen Modulen - und so muss ich wieder Leben und Entwicklung trennen.
Alex
@Alex: siehe bitte meine bearbeiten.
user487772
@ Tim: danke! Ich habe jetzt auch Ihre Antwort bearbeitet.
Alex
@ Alex: Danke. Ich wusste das nicht :-)
user487772
10

Diese können normalerweise bequem mit einem Konfigurations-Flag deaktiviert werden, so dass sie technisch aktiv sind, aber nichts tun. Wenn Sie dieses Flag in app/etc/local.xmlIhrem Live-System auf false setzen , sollte es Ihnen gut gehen.

Fabian Schmengler
quelle
Dies ist eine gute Lösung, es sei denn, Sie möchten Ihre local.xmlDatei in Ihrem Repo behalten . Welches könnte ein Fall sein.
user487772
Tolle Antwort - local.xmlist normalerweise nicht im Repo
Alex
6

Sehen Sie sich die MageTrashApp an, die kürzlich beim Magento Hackathon in Berlin erstellt wurde. Ermöglicht das Deaktivieren von Modulen über das Admin-Panel.

Karen Baker
quelle
5

Eine einfache Möglichkeit besteht darin, das Modul in / etc / modules zu deaktivieren, es zu pushen, die Datei lokal zu ignorieren und es erneut zu aktivieren.

Toon Van Dooren
quelle
In diesem Fall können Sie nur Änderungen an der Bootstrap-Datei für Erweiterungen vornehmen (z. B. Änderungen an Abhängigkeiten). Auch wenn Sie sich auf Ihrem anderen Computer umsehen, müssen Sie diese Tricks noch einmal wiederholen. Könnte mit einem Team von mehreren Entwicklern noch unbequemer sein.
user487772
Wenn Sie die Datei lokal ignorieren, müssen andere Entwickler sie nur erneut aktivieren. Dies dauert imho nur ein paar Sekunden.
Toon Van Dooren
Recht. Dann müssen sie es aber wieder lokal ignorieren. Und das ist für jede Erweiterung für jede Arbeitskopie. Ich meine, Ihre Lösung wird auf jeden Fall funktionieren, ist aber ein bisschen unpraktisch.
user487772
stimmt, ich schätze, ich habe es nur von meiner Position aus gesehen, ich integriere normalerweise nur 1 oder 2 Entwickler-Tools :-)
Toon Van Dooren
3

Ich denke, der beste Weg, um damit umzugehen, ist, entweder alle diese Module im lokalen CodePool zu belassen und alle lokalen Module mit dieser Zeile in Ihrer local.xml live zu deaktivieren:

    <disable_local_modules>true</disable_local_modules>

Oder Sie können "Modulausgabe deaktivieren" im Backend Ihrer Live-Umgebung ausführen. (System -> Konfiguration -> Erweitert). Dies deaktiviert das Modul jedoch nicht vollständig. Aber vielleicht ist es gerade genug zu wollen, dass du dich davor verstecken willst.

Die einzige andere Sache, an die ich denken kann, ist, Code zu schreiben, der das schaffen kann. Prüfen Sie einfach, ob es sich im Entwicklermodus befindet ( Mage::getIsDeveloperMode()) und deaktivieren Sie dann die Module. Ich habe hier einige Details dazu gefunden: /programming/6520634/magento-how-to-disable-module-programmatically

Rick Kuipers
quelle
Alle 3 Lösungen sind nicht gut genug. Durch das Deaktivieren von localModulen werden Sie gezwungen, alle anderen Module von localCodePool in CodePool zu verschieben communityund dies auch für alle zukünftigen Erweiterungen zu tun. Durch das Deaktivieren der Modulausgabe wird der Speicher weiterhin durch die Erweiterung verlangsamt. Für die dritte Lösung sind Änderungen erforderlich, die mit der Aktualisierung der Erweiterung (en) überschrieben werden.
user487772
2
@ Tim da stimme ich absolut zu. Es sollte eine bessere Möglichkeit geben, damit umzugehen, und es sollte eine Kernkonfiguration zum Deaktivieren / Aktivieren von Modulen im Entwicklungsmodus geben.
Rick Kuipers
3

Normalerweise lege ich sie nur in meine Testumgebung, checke sie jedoch nicht in das Versionskontrollsystem ein, indem ich beispielsweise die .gitignoreDatei verwende, um sie von der Prüfung für das Commit auszuschließen.

mpaepper
quelle
OP betonte die Beibehaltung von Erweiterungen im Repository.
user487772
1

Es gibt eine Folie in der Konferenz Imagine 2011 von Erik Hansen. Er gab einen Code in der Folie an, der wie folgt ist (für den Entwicklermodus)

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

Hier aktiviert Erik eine Einstellung basierend auf den Subdomains, die Sie selbst anpassen können.

Oğuz Çelikdemir
quelle
Was hat das mit Modulen für die Entwicklung zu tun?
Bryan Ruiz
Lieber @bryan_ruiz, das Magento-System überprüft den MAGE_IS_DEVELOPER_MODE, ob er aktiv ist oder nicht. Überprüfen Sie Alans Artikel. Magento-Entwicklermodus
Oğuz Çelikdemir
Was ich sage, ist, dass ich nicht verstehe, wie dies mit der Frage zusammenhängt. Der Entwicklermodus aktiviert oder deaktiviert die von ihm verwendeten Module nicht.
Bryan Ruiz
Bryan, wie ich in meinem Kommentar angegeben habe, können Sie den Code als Ihre Anfrage anpassen. Natürlich passt die Rohidee nicht zur Anfrage. Wenn Sie zum Beispiel schreiben, dass Ihre Erweiterung von einem Parameter abhängt, können Sie das obige Snippet überprüfen oder steuern!
Oğuz Çelikdemir