正在研究使用 IronWorker 来运行一些常见服务,但是我想知道是否有一种方法可以在 worker 本身中知道它在什么环境下运行。例如,在我们的主代码库中,我们将服务器 var ENV 设置为“开发”、“暂存”或“生产”之一。基于这个变量,我们的应用程序知道要加载哪些配置文件(通过 dirs config/development、config/staging 和 config/production 中的配置文件)。我想为工人设置类似的设置。
我注意到,当我通过 cli 上传工作人员时,我可以执行以下操作:
iron_worker 上传workers/example/hello_world --env staging
这允许我拥有一个 Iron.json 配置文件,其中包含 dev、staging 和 production 密钥。例如,
{
"production": {
"token": "AAAAAAAAAAAAAAAAAAAAAAAAAAA",
"project_id": "000000000000000000000001"
},
"staging": {
"token": "BBBBBBBBBBBBBBBBBBBBBBBBBB",
"project_id": "000000000000000000000002"
},
"development": {
"token": "CCCCCCCCCCCCCCCCCCCCCCCCCC",
"project_id": "000000000000000000000003"
},
"test": {
"token": "DDDDDDDDDDDDDDDDDDDDDDDDDD",
"project_id": "000000000000000000000004"
}
}
但是,在工作人员本身中,我无法从 cli 访问 env var,因此当工作人员需要加载某些配置变量时,它不知道要查看哪个目录。
在此处的文档中http://dev.iron.io/worker/reference/dotworker/他们表明您可以在 .worker 文件中设置一个环境变量,但这意味着我需要为每个环境有一个单独的工作文件并且(也许?)根据我部署到的环境将它们换掉。