Mese: Unterscheidung live - dev

hallo,
wie unterscheidet ihr in eurem Probjekt zwischen live und dev - Umgebung? Ganz aktuell geht es mir um eine FileNotFoundException, die live etwas anderes tun soll als in der dev-Umgebung. Aber solche Probleme ziehen sich ja durch das ganze Projekt. Oft habe ich mir mithilfe einer Konstante beholfen, aber wirklich sauber ist das ja nicht. Oder man includiert ganze Verzeichnisse in Abhänigkeit von der Umgebung (/core/classes/live vs. /core/classes/dev). Aber dann hat man ewige Redundanzen. Auch nicht so schön. Wie macht man das also am idealsten?

danke!
Mese

  1. હેલો

    wie unterscheidet ihr in eurem Probjekt zwischen live und dev - Umgebung?

    Anhand der Domain? Live ist meistens eine „de“-Domain, dev fast immer „test“. Also „http://example.test“.

    બાય

    --
     .
    ..:
    1. Hallo Macolm,

      wie unterscheidet ihr in eurem Probjekt zwischen live und dev - Umgebung?

      Anhand der Domain? Live ist meistens eine „de“-Domain, dev fast immer „test“. Also „http://example.test“.

      Ich meinte nicht, wie ich ermittle, ob ich auf dev oder live bin. Im meinte jetzt direkt im code.

      Beispiel

        
        
      if(something){  
        if(dev)doSomething();  
        if(live) doSomethingElse();  
      }  
        
      
      

      Ich möchte halt vermeiden, ständig solche Forks im Code zu haben. Konkret geht es mir vor allem auf das Reagieren von Fehlern, zum Beispiel nicht existene Route, fehlende Resourcen oder ähnliches. Da möchte ich eben auf dev anders reagieren (zum Beispiel mit einer Fehlermeldung, dem Öffnen eines Inspektors oder ähnlichem, als live).

      grüße
      mse

      1. Tach!

        Beispiel

        if(something){
          if(dev)doSomething();
          if(live) doSomethingElse();
        }

        
        > Ich möchte halt vermeiden, ständig solche Forks im Code zu haben.  
          
        Warum unterscheidet denn der Code aktiv solche Fälle selbst?  
          
        Mit Dependency Injection könnte man zwei Profile erzeugen und in der Entwicklung eben etwas anderes als im Produktiven in die Klasse/wasauchimmer injizieren. So ruft der Code mal dies und mal das auf, ohne dass man es ihm ansieht.  
          
          
        dedlfix.
        
  2. Tach!

    Wie macht man das also am idealsten?

    "Ideal" ist nicht steigerbar. Und ein Patentrezept dazu gibt es nicht.

    wie unterscheidet ihr in eurem Probjekt zwischen live und dev - Umgebung?

    Manchmal reicht es, anhand des Servernamens ein bestimmtes Profil zu verwenden (in dem zum Beispiel Zugangsdaten zur Test oder Prouktivdatenbank stehen). Manchmal kann man Code in Compiler-Direktiven-Blöcke schreiben, der dann nur im Debug-Zustand ausgeführt wird.

    Ganz aktuell geht es mir um eine FileNotFoundException, die live etwas anderes tun soll als in der dev-Umgebung.

    Da muss schlicht und einfach eine Fall-Unterscheidung herhalten. Wie das am besten geht, hängt von den Möglichkeiten und nicht zuletzt vom Einzelfall ab.

    Oder man includiert ganze Verzeichnisse in Abhänigkeit von der Umgebung (/core/classes/live vs. /core/classes/dev). Aber dann hat man ewige Redundanzen.

    Wieso hat man die? Warum muss der Code zwischen Development und Produktivumgebung so dermaßen unterschiedlich sein, dass ganze Verzeichnisse zur Organisation benötigt werden?

    dedlfix.