2014-07-05 227 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