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

更新

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 回答
0

您的 revel 应用程序需要驻留在 $GOPATH/src 文件夹中,然后代码完成将适用于您的 Web 应用程序。

于 2013-11-12T18:28:55.587 回答