狂欢框架中的相对路径

时间:2015-07-07 09:42:05

标签: go revel

如何在revel框架中将文件导入到revel basefolder中。目前我执行以下操作来获取一些配置值。

file, err := ioutil.ReadFile("conf/config.conf")
...

这导致我的服务器仅在我使用

启动revel时站在app目录中才有效
revel run myapp

有没有办法访问基本文件夹?

2 个答案:

答案 0 :(得分:1)

revel包中有导出的全局变量,您可以使用以下任何一个:

var (
    // App details
    AppName    string // e.g. "sample"
    BasePath   string // e.g. "/Users/revel/gocode/src/corp/sample"
    AppPath    string // e.g. "/Users/revel/gocode/src/corp/sample/app"
    ViewsPath  string // e.g. "/Users/revel/gocode/src/corp/sample/app/views"
    ImportPath string // e.g. "corp/sample"
    SourcePath string // e.g. "/Users/revel/gocode/src"

    // Revel installation details
    RevelPath string // e.g. "/Users/revel/gocode/src/revel"

    // Where to look for templates and configuration.
    // Ordered by priority.  (Earlier paths take precedence over later paths.)
    CodePaths     []string
    ConfPaths     []string
    TemplatePaths []string
)

如果它为空,那很可能是因为您从基础文件夹启动了应用程序。

请注意,这些路径由Init(mode, importPath, srcPath string)函数设置。它的文档说明:

srcPath - the path to the source directory, containing Revel and the app.
  If not specified (""), then a functioning Go installation is required.

另请查看:how to reference a relative file from code and tests

答案 1 :(得分:1)

我使用这种方法: 在conf / app.conf中添加一行以这种方式配置路径:

projectname.path =“/ foldersnames /”

并在控制器中编写如下方法:

func info(field string) string {                                                                                                                                                                               
  config, err := revel.LoadConfig("app.conf")                                                                                                                                                                  
  if err != nil || config == nil {                                                                                                                                                                             
    log.Fatalln("Failed to load configuration file", err)                                                                                                                                                      
   }                                                                                                                                                                                                            
  return config.StringDefault(field, "empty")                                                                                                                                                                  
} 

您可以使用此代码构建帮助程序,并从所有应用程序中获取配置变量。

你必须这样打电话:

info("projectname.path")