2013-10-29 7 views
5

ist es möglich, Revel Rahmen mit Go-Code-Abschluss-Unterstützung zu verwenden. Soweit ich weiß, erfordert das gocode Dienstprogramm den Code in eine Bibliothek in einen pkg Unterordner kompiliert werden, um zu funktionieren, aber das Framework kompiliert im laufenden Betrieb.Revel Rahmen und Go-Code-Vervollständigung

Ich bin irgendwie auf dem Thema verloren. Wäre der richtige Weg, die Go-Installation für relevante Unterpakete aufzurufen? Das scheint zu funktionieren, aber es ist nicht die eleganteste Art, dies aus meiner Sicht zu tun.

Hoffe, dass jemand mich in die richtige Richtung zeigen kann.

EDIT: das Problem konzentriert sich nur auf Quellen, die ich als Teil meiner Revel-Anwendung schreibe. Heruntergeladene Pakete haben eine Autovervollständigung wie erwartet

EDIT2: Dies ist die beste Lösung, die ich bisher gefunden habe - Ausführung go get Befehl auf Ihrem Projekt Unterordner. Wenn Ihr Projekt also mein_Projekt heißt, dann würden Sie so etwas wie go get my_project/revel/app/tmp aufrufen. Da dieser Ordner die Hauptfunktion für das Projekt enthält, werden alle Abhängigkeiten abgerufen und in Pakete umgewandelt. Wenn der Ordner tmp nicht existiert, müssen Sie revel run in Ihrem Projekt ausführen und Ihre Web-App öffnen, damit sie im laufenden Betrieb erstellt wird. Hoffe das hilft zumindest ein bisschen. Ich bin immer noch offen für eine bessere Alternative :)

+0

Was verwenden Sie, um Go zu schreiben? Sublime Text + zum Beispiel das GoSublime-Plugin verwendet Pakete, die auf Ihrem GOPATH installiert sind, um "Autocomplete" -Funktionalität bereitzustellen, wenn Sie diese zu Ihren Paketimporten hinzufügen. Revel, "go getable", sollte genauso funktionieren. – elithrar

+1

Ich benutze LiteIDE, GOPATH wird wie gewohnt auf meinen Arbeitsbereich gesetzt. Pakete, die mithilfe von go get installiert werden, verfügen über eine automatische Vervollständigung. Problem tritt auf, wenn Sie mit dem Schreiben der Revel-Anwendung beginnen. Die Quellen, die ich schreibe, werden nicht in den pkg-Unterordner kompiliert, wenn ich die Anwendung ausführe, so dass es für meinen Code keine automatische Vervollständigung gibt. Tut mir leid, wenn das nicht klar war, ich werde es bearbeiten, um das Problem zu klären. –

Antwort

0

Sie Revel Anwendung muss in Ihrem $ GOPATH/src-Ordner befinden und dann Code-Vervollständigung funktioniert für Ihre Web-App.

+0

Es befindet sich im Ordner/src. Das Dienstprogramm 'gocode' führt die Code-Vervollständigung auf der Grundlage von * .a-Bibliotheken aus, die im Unterordner '/ pkg' erstellt wurden, und GOOS- und GOARCH-Variablen, die den Unterordner im Ordner/pkg definieren, in dem der 'gocode' nachsehen wird. –

0

aktualisieren

Entweder ist der Prozess der Zusammenstellung von Revel harness geändert hat oder gocode wurde verbessert. Aber alles funktioniert jetzt out of the box. Es sind keine zusätzlichen Anstrengungen erforderlich.

Alte Antwort

Ich habe das gleiche Problem konfrontiert. Meine Lösung ist eine modifizierte Version Ihrer EDIT 2 Problemumgehung. In meinem app/init.go ich hinzugefügt:

import "os/exec" 

und

// Build the project packages on app start so it's possible to use autocomplete. 
revel.OnAppStart(func() { 
    if revel.Config.BoolDefault("mode.dev", false) { 
     go func() { 
      _, err := exec.Command("go", "get", "bitbucket.org/USERNAME/PROJECT/app/tmp").Output() 
      if err != nil { 
       revel.ERROR.Printf("failed to 'go get' project, error: %v", err) 
      } 
     }() 
    } 
}) 

So, jetzt in dev-Modus alles automatisch neu kompiliert die Pakete auf jeder Neuübersetzung von Revel Projekt.