2013-10-29 11 views
5

RevelフレームワークでGoコード補完を使用することができます。私の知る限り、gocodeユーティリティは、機能するためには、pkgサブフォルダにライブラリにコンパイルするコードが必要ですが、フレームワークはオンザフライでコンパイルします。RevelフレームワークとGoコード補完

私はトピックの一部を失っています。適切な方法で関連するサブパッケージのインストールを呼び出すのでしょうか?それはうまくいくようですが、私の見解からこれを行う最もエレガントな方法ではありません。

誰かが私を正しい方向に向けることを願っています。

EDIT:私のRevelアプリケーションの一部として書いているソースにのみ問題があります。ダウンロードしたパッケージには、自動補完機能があります。

EDIT2:これは私が今までに見つけたベストソリューションです。プロジェクトのapp/tmpサブフォルダでgo getコマンドを実行してください。したがって、あなたのプロジェクトがmy_projectと呼ばれる場合は、go get my_project/revel/app/tmpのようなものを呼び出します。このフォルダにはプロジェクトの主な機能が含まれているため、すべての依存関係をプルしてパッケージにします。 tmpフォルダが存在しない場合は、プロジェクトにrevel runを実行して、Webアプリケーションを開いて、即座に作成される必要があります。これが少なくとも少し助けてくれることを願っています。私はまだもっと良い選択肢のために開いています:)

+0

あなたは何を書いていますか?たとえば、Sublime Text + GoSublimeプラグインは、GOPATHにインストールされたパッケージを使用して、パッケージのインポートに追加するときに「オートコンプリート」機能を提供します。 Revelは、 "get getable"と同じように動作するはずです。 – elithrar

+1

私はLiteIDEを使用していますが、GOPATHはいつものように自分のワークスペースに設定されています。 go getを使用してインストールされたパッケージには、オートコンプリートがあります。問題は、Revelアプリケーションの作成を開始したときに発生します。私が書いたソースは、アプリケーションを実行するときにpkgサブフォルダにコンパイルされないので、コードの自動補完はありません。申し訳ありませんが、投稿からはっきりしていない場合は、問題を明確にするために編集します。 –

答えて

0

あなたのアプリケーションは$ GOPATH/srcフォルダの中に存在する必要があり、コード補完はあなたのWebアプリケーションで機能します。

+0

これは/ srcフォルダにあります。 'gocode'ユーティリティは、/ pkgサブフォルダに作成された* .aライブラリと、/ gkgodeが検索される/ pkgフォルダ内のサブフォルダを定義するGOOSおよびGOARCH変数に基づいてコード補完を行います。 –

0

更新

レヴェルのharnessによって、コンパイルのプロセスが変更されたかgocodeが改善されましたか。しかし、すべてがすぐに使えます。さらなる努力は必要ありません。

旧回答

私は同じ問題に直面しています。私の解決策は、EDIT 2回避策の修正版です。私app/init.goで 私が追加:

import "os/exec" 

// 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) 
      } 
     }() 
    } 
}) 

をだから、今のdevのモードでは、自動的にレヴェルプロジェクトのすべての再コンパイルにすべてのパッケージを再コンパイルします。

関連する問題