2014-07-05 175 views
2

我使用martini在Go中有一个GAE应用程序。我需要能够设置MARTINI_ENV环境变量来告诉martini它应该使用生产设置进行初始化。根据Python文档you can set environment variables in the app.yaml。我在Go docs中没有看到任何提及,但我猜它应该是一样的。如何设置GAE环境特定的环境变量?

我需要能够对MARTINI_ENV环境变量设置为production,但我只想要做的,当我在生产实际上,我(即!appengine.IsDevAppServer())。有没有什么办法可以告诉app.yaml只在non-dev服务器上运行?

+0

你尝试,看看是否可行与否? – OneOfOne

+0

我没有,但显然我应该有。根据@ beat-richartz的说法,GAE上Go应用程序的设置环境变量不支持**。 – blachniet

回答

3

Go中的GAE没有设置环境变量的概念,因为它们不会在您的GAE实例中共享。

由于martini.Env是一个导出变量,尽管您可以使用自己的逻辑对其进行设置。有多种方法可以做到这一点:

  1. 默认设置martini.Env生产时MARTINI_ENV不存在
  2. 添加您自己config.yaml到您的回购,分析它,并设置martini.Env从那里
  3. 使用像godotenv库与其Read函数,它将读取你的dotfile,而不是加载到env。
+1

我不应该认为环境变量只适用于GAE-Go。感谢您的替代想法。我决定在我的'init()'中使用这段代码:'appengine.IsDevAppServer(){martini.Env = martini.Dev} else {martini.Env = martini.Prod}' – blachniet