配置
在这章节我们将学习如何管理配置。
环境变量是有效隔离不同环境之间一些特定值或者密钥的最好的方法,而不是将配置直接写在代码里面或者配置文件。
可用的环境变量
下面是一些Buffalo可用的环境变量:
Variable | Default | Usage |
---|---|---|
GO_ENV |
development |
The environment (dev, qa, production etc.) that Buffalo is run in |
GO_BIN |
go |
The Go compiler to use |
BUFFALO_PLUGIN_PATH |
$PATH |
Where Buffalo looks for plugins |
BUFFALO_PLUGIN_TIMEOUT |
1s |
How long Buffalo waits for a plugin to respond |
ADDR |
127.0.0.1 or 0.0.0.0 |
Which address to bind the server to |
PORT |
3000 |
Which port to bind the server to |
HOST |
http://127.0.0.1:$PORT |
The "URL" of the application (i.e. what end users type in) |
SESSION_SECRET |
"" |
A salt used for securing sessions |
自定义环境变量
我们可以自己定义环境变量,并且在我们的Buffalo项目中使用这些变量。可以通过包 envy 来简单的使用。
import "github.com/gobuffalo/envy"
// [...]
// 获取 环境变量 MYSECRET , 如果没有设定的话,为空。
var MYSECRET = envy.Get("MYSECRET", "")
// 获取 环境变量 REQUIREDSECRET, 如果没有设定的话,返回错误
REQUIREDSECRET, err := envy.MustGet("REQUIREDSECRET")
支持.env文件
Buffalo 从0.10.3 之后的版本开始支持 .env,意思就是在app启动的时候一次性从.env文件读取变量设置为环境变量。Buffalo会从项目的根目录下加载.env文件。
如果没有配置过.env文件,下面是一个例子:
SENDGRID_API_KEY=ABCCOQ7GFRVCW0ODHPFQ3FTP5SLL1Q
SENDGRID_EMAIL=email@myapp.com
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=https://myapp.com
在使用buffalo new 创建项目的时候,已经替我们在根目录下创建了.env文件。同时也将.env加入到.gitignore中了,防止.env文件被提交到git服务器上,减少可能出现的泄露。