2016-01-12 30 views
5

アプリケーションを再起動せずに設定することはできますか?アプリケーションを再起動せずにHeroku環境変数を設定

私のアプリは、OAuth2経由で別のオンラインサービスに接続します。私が接続するサービスごとに、OAuth2 IDと秘密を設定する必要があります。これらの設定変数を自分のコードの外に保つために、私は環境変数を使って、process.env(node.js)を読み込んでいます。

私のアプリに新しいサービスを追加するたびに、IDと秘密の対応する環境変数を追加する必要があります。最新のコードをプッシュする前にこれを行う必要があるので、新しいサービス接続でアプリケーションが次に起動するときに、OAuth2 IDとシークレット変数が利用できるようになります。最新のコードheroku config:set <SERVICE>_ID=foo <SERVICE>_SECRET=bar

  • プッシュ:現在git push heroku master
  • 、これらの操作の両方が再起動されます

    1. は、Herokuののツールベルトを使用して環境変数を設定します。次のように

      は、現在、私のワークフローがありますアプリ。私は実際には、これらの設定値の変更は手順2)まで有効にする必要はありませんので、アプリケーションを再起動しない最初の操作を好むでしょう。ステップ1)で再起動すると、私のアプリは不必要なダウンタイムを経験します。

      したがって、手順1)でアプリを再起動できないようにする方法はありますか?

    +1

    実行中のプロセスの環境変数を変更することはできません。アプリ内からしか操作できませんでした。しかし、アプリケーションがすでに実行されている間に環境変数を変更する必要がある場合は、とにかく何か問題があります。 – poke

    +0

    コメントをいただき、ありがとうございますが、実際には環境変数を追加していますが、既存の変数は変更していません。だから私はこれが「何か間違っている」とは思っていませんか? – fiznool

    +0

    アプリケーションが既に実行された後にサービスシークレットを設定しています。サービスの秘密は、アプリケーションの実行中に変更すべきではない設定です。 – poke

    答えて

    3

    this articleによると、それはかなり明示的に設定するvarを設定または削除するたびに、あなたのアプリが再起動されます

    と述べています。

    個人的に私は、あなたが求めていることをやり遂げる方法があることを望みます。大規模なアプリケーションでは、システム全体のハード再起動は、多くのプロセスタイプを実行しているときに苦労することがあります。多くの場合、私は、将来の機能性を含むような、または古い値を持つことはOKですが、ロールバック再起動時に新しい値を有効にしたいなど、アプリケーションが即座に取得するために重要ではない環境変数を設定していますファッション。

    関連する問題