environment-variables - 为钢铁 worker 设置环境类型

标签 environment-variables ironworker

正在考虑使用 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/

相关文章:

Powershell GetEnvironmentVariable 与 $Env

c - 将 PATH 环境变量拆分为单独的文件路径

python - zappa将环境变量上传到哪里?

web-services - 何时使用消息队列以及何时使用云后台 worker

ssl - CasperJS 和 IronWorker : unrecognized option `--ssl-protocol=any'

ruby - 如何在不需要为私有(private) Docker 存储库付费或公开我的代码的情况下使用 Docker 启动 IronWorker?

ruby-on-rails - 如何使用 iron_worker 在 iron.io 上要求 '' pg"gem

node.js - Node.js 应用程序与 IronWorker 上的工作线程之间的通信。如何正确轮询任务状态并接收任务响应?

c# - 如何使用.NET 远程扩展环境变量?

php - 在 Dockerfile 中使用环境变量