5

Go コード補完をサポートするRevelフレームワークを使用することが可能です。私の知る限り、gocodeユーティリティが機能するには、コードをライブラリにコンパイルしてpkgサブフォルダーにする必要がありますが、フレームワークはその場でコンパイルを行います。

私はそのトピックについてちょっと迷っています。関連するサブパッケージの go install を呼び出すのが適切な方法でしょうか? それは機能しているように見えますが、私の観点からこれを行う最もエレガントな方法ではありません。

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

編集: 問題は、Revel アプリケーションの一部として私が書いたソースにのみ焦点を当てています。ダウンロードされたパッケージには、期待どおりのオートコンプリートがあります

EDIT2:これは私がこれまでに見つけた最良の解決策です-go getプロジェクトのapp/tmpサブフォルダーでコマンドを実行します。したがって、プロジェクトが my_project と呼ばれる場合、次のように呼び出します。go get my_project/revel/app/tmpこのフォルダーにはプロジェクトのメイン関数が含まれているため、すべての依存関係を取得してパッケージにビルドします。tmp フォルダーが存在しない場合はrevel run、プロジェクトで実行し、Web アプリを開いてその場で作成する必要があります。これが少なくとも少し役立つことを願っています。私はまだより良い代替案を受け入れています:)

4

2 に答える 2

0

アプリケーションが $GOPATH/src フォルダー内に存在する必要があることを理解すると、Web アプリでコード補完が機能します。

于 2013-11-12T18:28:55.587 に答える
0

アップデート

Revel's によるコンパイルのプロセス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)
            }
        }()
    }
})

そのため、開発モードでは、revel プロジェクトを再コンパイルするたびにすべてのパッケージを自動的に再コンパイルします。

于 2014-08-01T08:29:43.567 に答える