正在考虑使用 IronWorker 来运行一些常见服务,但是我想知道是否有一种方法可以知道工作线程本身在什么环境下运行。例如,在我们的主代码库中,我们将服务器变量 ENV 设置为等于“开发”、“暂存”或“生产”之一。基于此变量,我们的应用程序知道要加载哪些配置文件(通过目录 config/development、config/staging 和 config/Production 中的配置文件)。我希望为员工提供类似的设置。
我注意到,当我通过 cli 上传工作人员时,我可以执行以下操作:
iron_worker上传workers/example/hello_world --env staging
这使我能够拥有一个iron.json 配置文件,其中包含开发、暂存和生产 key 。例如,
{
"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 访问环境变量,因此当工作程序需要加载某些配置变量时,它不知道要查找哪个目录。
在此处的文档中http://dev.iron.io/worker/reference/dotworker/它们表明您可以在 .worker 文件中设置环境变量,但这意味着我需要为每个环境都有一个单独的工作文件,并且(也许?)根据我要部署到的环境来交换它们。
最佳答案
有一些棘手的方法:
1) 铁.json。与描述的格式相同,没有变化
2) .worker 文件。将环境从本地系统传递到 IronWorker 环境。将此行添加到 .worker 文件中:
set_env 'IRON_ENV', ENV['IRON_ENV']
3) 上传代码命令。而不是
iron_worker upload workers/example/hello_world --env staging
使用不同的语法:
IRON_ENV=staging iron_worker upload workers/example/hello_world
4)检查 Worker 端的环境(当然支持任何选择的语言):
puts ENV['IRON_ENV']
关于environment-variables - 为钢铁 worker 设置环境类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27568398/