How to differentiate between local deployment and

2019-02-20 08:57发布

I want to set global variable, for example:

var DEBUG_MODE bool

func init() {
  // set DEBUG_MODE true if localhost (not appspot.com or other domain)
}

How to do this?

1条回答
戒情不戒烟
2楼-- · 2019-02-20 09:43

Easiest is to use use appengine.IsDevAppServer() to tell if your app is running in development mode (using the AppEngine SDK) or live (in production):

func IsDevAppServer() bool

IsDevAppServer reports whether the App Engine app is running in the development App Server.

Alternatively you can also use appengine.ServerSoftware() which contains this information along with your App version, merged into one string:

func ServerSoftware() string

ServerSoftware returns the App Engine release version. In production, it looks like "Google App Engine/X.Y.Z". In the development appserver, it looks like "Development/X.Y".

So for example what you want to do:

var DEBUG_MODE bool

func init() {
    DEBUG_MODE = appengine.IsDevAppServer()
}

Or in one line:

var DEBUG_MODE = appengine.IsDevAppServer()

Although note that you could just call appengine.IsDevAppServer() whenever you would refer to DEBUG_MODE. Also the name DEBUG_MODE does not conform to Go naming conventions, it should either be DebugMode if it needs to be exported (because you want to access it from other packages too), or it should be debugMode if it doesn't need to be exported.

See this related question (possible duplicate?): How to set variables based on project id?

查看更多
登录 后发表回答