Ergebnis 1 bis 24 von 24

Thema: Best Practice Extention-Entwicklung

  1. #1
    Contao-Fan Avatar von Wichteldesign
    Registriert seit
    23.06.2009.
    Ort
    Nürtingen
    Beiträge
    353

    Frage Best Practice Extention-Entwicklung

    Moin,

    ich baue gerade mal wieder an ein paar Extentions und wollte mal hören wie Ihr das macht.

    Ich für meinen Teil habe eine Contao-Installation in der ich einige Extentions liegen habe an denen ich gerade bauen. Das geht auch solange gut, solange es nur ein /system/modules/modulname Ordner gibt, er wird per git gemanaged.

    Sobald aber Dateine außerhalb davon liegen (Plugins, Library usw.) wirds schwer. Entweder vergesse ich die Dateien beim Upload oder sie hängen nicht im git and so on.

    Deshalb mal die Frage, wie geht Ihr da dran. Optimal wäre ja ein Verzeichniss mit allen Dateien der Extention das dann irgendwie in einer Contao Installation landet. Wie weis ich gerade nicht, aber ich setzte mal auf Eure kreative Energie

    Gruß
    Felix
    Besten Gruß, Felix Peters
    Wichteldesign // Github // @wichteldesign // @el_wichtel

  2. #2
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Der Frage schließe ich mich an!

  3. #3
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.335
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Und weshalb legt Ihr nicht die gesamte benötigte Struktur inkl. /plugins oder /system/modules/undsoweiter einfach in Eurem Projekt an? Dann passt das doch zum Ende.

    Carolina.

  4. #4
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Also unter Linux verwende ich unionfs, das ist ein Stackable-File-System das mir eine Installation aus mehreren Quellen zusammen baut.
    Meine Extensions sind alle so im Repository aufgebaut, dass diese immer im TL_ROOT anfangen, also den kompletten Pfad system/modules/X beinhalten (siehe z.B. hier https://github.com/InfinitySoft/Avisota).
    Mit unionfs mounte ich mir diese einfach über ein Contao drüber und extrahiere veränderbare Dateien in ein Arbeitsverzeichnis:

    Extensions:
    Code:
    ~/workspace/contao/Ext1
    ~/workspace/contao/Ext2
    ~/workspace/contao/Ext3
    ~/workspace/contao/Ext4
    Contao:
    Code:
    ~/Contao/contao-2.10.4
    Ziel:
    Code:
    ~/public_html/contao-2.10.4
    Arbeitsverzeichnis:
    Code:
    ~/public_html/contao-2.10.4_data
    Der Mount Befehl sieht dann so aus (OHNE UMBRÜCHE, die habe ich nur der Lesbarkeit halber hinzugefügt!!!):
    Code:
    unionfs -o cow,allow_other '/home/tristan/public_html/contao-2.10.4_data=RW:
    /home/tristan/workspace/contao/Ext1=RO:
    /home/tristan/workspace/contao/Ext2=RO:
    /home/tristan/workspace/contao/Ext3=RO:
    /home/tristan/workspace/contao/Ext4=RO:
    /home/tristan/Contao/contao-2.10.4=RO' \
    '/home/tristan/public_html/contao-2.10.4'
    Hat den Vorteil das 1. alle schön von einander getrennt ist und 2. brauche ich, um die Installation zu resetten nur das Arbeitsverzeichnis und die Datenbank löschen.

    Psi macht das ganze mit AUFS, das benötigt jedoch spezielle Kernel Module, während unionfs im FUSE Userspace läuft.

    MfG Tristan

  5. #5
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    Danke für den Tip, das werde ich mir so auch einmal anschauen!

  6. #6
    Contao-Fan Avatar von Wichteldesign
    Registriert seit
    23.06.2009.
    Ort
    Nürtingen
    Beiträge
    353

    Standard

    @lucina

    Den Gedanken hatte ich auch schon, aber wie testes du das ganze. Ein Modul ohne Contao ist ja recht sinnfrei, oder verstehe ich dich falsch?


    @tril

    Klingt schon mal sehr Spannend und beweist, dass Linux doch das coolste System ist (jetzt gibt's glaub Haue). Dummerweise muss ich hier auf einem Mac entwickeln und für Windoof User wird's glaube ich auch schwer. Werde mir das aber auf jeden Fall mal ansehen. Vielleicht lässt sich was mit einer VM machen.
    Besten Gruß, Felix Peters
    Wichteldesign // Github // @wichteldesign // @el_wichtel

  7. #7
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.335
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zitat Zitat von Wichteldesign Beitrag anzeigen
    Den Gedanken hatte ich auch schon, aber wie testes du das ganze. Ein Modul ohne Contao ist ja recht sinnfrei, oder verstehe ich dich falsch?
    Indem ich einen Symlink setze.

  8. #8
    Contao-Fan Avatar von Wichteldesign
    Registriert seit
    23.06.2009.
    Ort
    Nürtingen
    Beiträge
    353

    Standard

    Ich glaube ich stehe auf dem Schlauch. Kannst du mir dazu bitte ein Beispiel geben?

    Nachtrag:

    Laut diesem Threat gibts da Probleme. Hast du die gelöst? Ich wäre dir sehr dankbar dafür

    https://www.contao-community.de/show...n-mit-Symlinks
    Geändert von Wichteldesign (23.02.2012 um 10:54 Uhr)
    Besten Gruß, Felix Peters
    Wichteldesign // Github // @wichteldesign // @el_wichtel

  9. #9
    Contao-Fan Avatar von Wichteldesign
    Registriert seit
    23.06.2009.
    Ort
    Nürtingen
    Beiträge
    353

    Standard

    So viele Entwickler und keiner eine Idee? Ihr entwickelt doch nicht alle auf Linux, oder?
    Besten Gruß, Felix Peters
    Wichteldesign // Github // @wichteldesign // @el_wichtel

  10. #10
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Bei weitem nicht alle und viele arbeiten auch gar nicht mit Symlinks (wie ich), daher kann ich dir kein "Best practice" Empfehlung zu Symlinks geben.

    PS: Wenn du einen Beitrag nachträglich editierst, bekommt man das nicht mit, außer man ließt den Beitrag explizit

  11. #11
    Contao-Fan Avatar von Wichteldesign
    Registriert seit
    23.06.2009.
    Ort
    Nürtingen
    Beiträge
    353

    Standard

    Zitat Zitat von tril Beitrag anzeigen
    Bei weitem nicht alle und viele arbeiten auch gar nicht mit Symlinks (wie ich), daher kann ich dir kein "Best practice" Empfehlung zu Symlinks geben.
    Danke für die Antwort. An die Sache mit dem nachtrag hatte ich jetzt gar nicht mehr gedacht.

    Es geht nicht nur um Symlinks. Setzt du immer eine neue Installation auf, laufen alle Extentions in einer? Wie verwaltet Ihr Euren Code? Ich such einfach nach neuen Ansätzen.
    Besten Gruß, Felix Peters
    Wichteldesign // Github // @wichteldesign // @el_wichtel

  12. #12
    Contao-Urgestein Avatar von tril
    Registriert seit
    07.01.2010.
    Ort
    Bad Marienberg
    Beiträge
    2.939
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Wichteldesign Beitrag anzeigen
    Es geht nicht nur um Symlinks. Setzt du immer eine neue Installation auf, laufen alle Extentions in einer? Wie verwaltet Ihr Euren Code? Ich such einfach nach neuen Ansätzen.
    Da hatte ich bereits drauf geantwortet
    https://www.contao-community.de/show...l=1#post184878

  13. #13
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    Wir haben alle unsere freien Extensions in einem Ordner "! Github !". Dort liegen die Extension ab dem Ordner TL_ROOT und werden via Symlink in die entsprechenden Testinstallationen eingebunden. Jeder unserer Entwickler hat seine eigenen Installationen. Von 2.9.5 bis 2.11.0

    Die privaten Extensions liegen in dem Ordner "! Private Github !" und werden auch via Symlink eingebunden.

  14. #14
    Contao-Fan Avatar von Wichteldesign
    Registriert seit
    23.06.2009.
    Ort
    Nürtingen
    Beiträge
    353

    Standard

    Das heißt Ihr habt eine Test-Installation und da werden dann im Root einfach die Symlinks auf die Extention gesetzt. DAs werde ich doch mal probieren. Klingt logisch. Danke
    Besten Gruß, Felix Peters
    Wichteldesign // Github // @wichteldesign // @el_wichtel

  15. #15
    Contao-Urgestein
    Registriert seit
    07.07.2009.
    Beiträge
    4.107

    Standard

    die symlinks kannst du setzen wie du willst. wir gehen meist vom modules ordner aus. dann überschreiben sich keine symlinks.

  16. #16
    Contao-Fan Avatar von Wichteldesign
    Registriert seit
    23.06.2009.
    Ort
    Nürtingen
    Beiträge
    353

    Standard

    Ich hab damit jetzt mal eine weile experimentiert. Man muss dazu sagen, ich bin absoluter Unix-Noob.

    Die Symlinks für einzelne ordner bekomme ich hin. Meine Extention liegt schön für sich allein in nem Ordner. In meiner Test-Installation binde ich im System/modules den Symlink auf den Modulordner ein. Klappt super.

    Code:
    # Zum system/modules Ordner navigieren
    ln -s PfadZumModulordnerDerExtention NameDesModuls
    Wenn jetzt noch zusätzliche Plugins benötigt werden, kommen die auch wieder per Symlink in den Plugins-Ordner. Auch gut.

    Was mich immer noch stutzig macht, Ihr schreibt davon Symlinks im Root einzusetzten. Verstehe ich das nur falsch, oder wie macht ihr das? Dunkle Magie?

    Danke schon mal für die bisherige Hilfe,
    Gruß Felix
    Besten Gruß, Felix Peters
    Wichteldesign // Github // @wichteldesign // @el_wichtel

  17. #17
    Contao-Urgestein
    Registriert seit
    07.04.2010.
    Ort
    Stuttgart
    Beiträge
    2.733
    User beschenken
    Wunschliste

    Standard

    • TL_ROOT
      • system
        • modules
          • deinmodul (via symlink in deine Contaoinstallation)
        • plugins
          • deinplugin (via symlink in deine Contaoinstallation)


    Dann hast du die ganze Erweiterung an einem Ort beisammen. (zB in deinem Git-Repo) und kannst sie 1.1 ins ER laden, auch wenn die Daten in unterschiedlichen Ordnern sitzen.

  18. #18
    Contao-Fan Avatar von Wichteldesign
    Registriert seit
    23.06.2009.
    Ort
    Nürtingen
    Beiträge
    353

    Standard

    Zitat Zitat von psren Beitrag anzeigen
    • TL_ROOT
      • system
        • modules
          • deinmodul (via symlink in deine Contaoinstallation)
        • plugins
          • deinplugin (via symlink in deine Contaoinstallation)


    Dann hast du die ganze Erweiterung an einem Ort beisammen. (zB in deinem Git-Repo) und kannst sie 1.1 ins ER laden, auch wenn die Daten in unterschiedlichen Ordnern sitzen.
    Genau, so gehe ich vor. War jetzt nur noch die frage ob man das auf einen Link verkleinern kann. Aber so wie es aussieht wohl nicht.
    Besten Gruß, Felix Peters
    Wichteldesign // Github // @wichteldesign // @el_wichtel

  19. #19
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Nein, das geht nicht, da brauchst du dann eben wieder ein overlaying fs wie es Tristan schon vorgeschlagen hat.
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  20. #20
    Contao-Fan Avatar von Wichteldesign
    Registriert seit
    23.06.2009.
    Ort
    Nürtingen
    Beiträge
    353

    Standard

    Hi,

    ich habe schon wieder ein Problem

    Ich versuche in einer Extention auf die initialize.php zu kommen:

    PHP-Code:
    require_once('../../initialize.php');
    // Ausgeführt aus system/modules/extention/script.php 
    Ich brauche das für ein kleines Script (ähnlich wie die Ajax con Andreas Schempp). Dummerweise wird die Datei durch die Einbindung per Symlink nicht gefunden.

    Jemand eine Idee woe sich das lösen lässt?

    Gruß Felix
    Besten Gruß, Felix Peters
    Wichteldesign // Github // @wichteldesign // @el_wichtel

  21. #21
    Maintainer Avatar von xtra
    Registriert seit
    02.07.2009.
    Ort
    Tuebingen
    Beiträge
    2.007
    User beschenken
    Wunschliste

    Standard

    Evtl. follow symlinks nicht aktiv (apache: "Options +FollowSymLinks")?
    Bedenke stets: Wenn Du ungenaue oder unzureichende Angaben machst, so koennte dies die Bearbeitung deiner Frage endlos verzoegern (oder sogar dazu fyhren, dass ich zu viel nachdenken muss und die Antwort vergesse!). Kein Support per PN.

  22. #22
    Contao-Fan Avatar von Wichteldesign
    Registriert seit
    23.06.2009.
    Ort
    Nürtingen
    Beiträge
    353

    Daumen hoch

    Werde ich mal testen. Danke für den Tipp
    Besten Gruß, Felix Peters
    Wichteldesign // Github // @wichteldesign // @el_wichtel

  23. #23
    Contao-Fan Avatar von Wichteldesign
    Registriert seit
    23.06.2009.
    Ort
    Nürtingen
    Beiträge
    353

    Gesicht zeigt die Zunge

    Hi,

    komme damit leider nicht weiter. FollowSymLinks ist gesetzt, wenn es deaktiviert ist, komme ich gar nicht auf das Script über den Symlink.

    Das problem ist, require_one() (include usw. auch) löst den Pfad absolut auf. Das heist es entsteht der Pfad ins Extension-Verzeichnis. Nur da liegt logischerweise keine drin.

    Habe jetzt den halben morgen gesucht und probiert, leider ohne erfolg. Gibt es einen trick das der Symlink, und nicht der echte Pfad verfolgt wird?
    Ich könnte aus den Pfaden des $_SERVER Arrays mir was bauen, aber sauber ist das nicht wirklich.

    Ich werde das ganze jetzt wohl per Build-Sktipt und rsync lösen. Aber wenn es für Oben eine Lösung gibt, immer gerne her damit :-)
    Besten Gruß, Felix Peters
    Wichteldesign // Github // @wichteldesign // @el_wichtel

  24. #24
    Contao-Fan Avatar von Wichteldesign
    Registriert seit
    23.06.2009.
    Ort
    Nürtingen
    Beiträge
    353

    Multimedia

    UPDATE:

    Mir ist gerade noch eine Möglichkeit eingefallen, die das Problem in diesem Fall löst:

    Ich binde die initialize.php einfach auch per Symlink, dieses mal aber in der Extension ein. Dadurch wird die originale initialize in ihrem vorgesehenen Umfeld verwendet und alles passt. Ist zwar eine Speziallösung für diesen Fall, aber es funktioniert.
    Besten Gruß, Felix Peters
    Wichteldesign // Github // @wichteldesign // @el_wichtel

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •