2

IronWorker を使用していくつかの一般的なサービスを実行することを検討していますが、ワーカー自体がどの環境で実行されているかを知る方法があるかどうか疑問に思っています。たとえば、メインのコード ベースでは、サーバー変数 ENV を「開発」、「ステージング」、または「運用」のいずれかに設定します。この変数に基づいて、アプリはどの構成ファイルをロードするかを認識します (dirs config/development、config/staging、および config/production 内の構成ファイルを介して)。ワーカーに同様の設定をしたいと思います。

CLI 経由でワーカーをアップロードすると、次のことができることに気付きました。

iron_worker upload workers/example/hello_world --env ステージング

これにより、dev、staging、および production キーを含む 1 つの iron.json 構成ファイルを持つことができます。例えば、

{
  "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 ファイルで環境変数を設定できることが示されていますが、これは、環境ごとに個別のワーカー ファイルが必要であることを意味します。そして(おそらく?)デプロイ先の環境に応じてそれらを交換します。

4

1 に答える 1

4

いくつかのトリッキーな方法があります:

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']
于 2014-12-19T15:49:28.447 に答える