20

私はHerokuでRailsを使用することを楽しんでいます。そのように、変更をコミットしxyz.ymlて再デプロイすることなく、Herokuアプリの構成プロパティを調整できます。

RailsアプリのYaml構成ファイルを完全に廃止し、ENVに構成を保存することに可能な限り依存することをお勧めします。これは、 12要素の構成原則に沿っています。

ただし、Yamlベースの構成管理からHeroku/12ファクターベースの構成管理への切り替えにはいくつかのトレードオフがあります。

  • デプロイ(qa、stage、prod、dev、demo、labs)の急増がYamlファイルの急増につながる可能性があるのは事実ですが、コピー&ペーストして新しい構成プロファイルを作成するのは非常に簡単です。Herokuのあるデプロイメントから別のデプロイメントに構成プロファイルを「コピー」する方法がわかりません。
  • 構成データをリポジトリに保存するということは、Herokuの場合、デプロイと構成、およびアプリケーションが1回の操作で実行されることを意味します。構成をYamlファイルからENV変数に移動する場合は、デプロイ後に別の手順でアプリケーションを構成する必要があります。

プライベートアプリケーションで12ファクタースタイルの構成を使用したことのある人、および多くの展開にわたって多くの構成変数をどのように管理したかについて聞きたいと思います。

  • 新しい展開をすばやく構成するにはどうすればよいですか?
  • リポジトリではない場合、構成変数の信頼できるソースをどこに保持しますか?開発者間でどのように配布しますか?

ありがとう!

4

3 に答える 3

11

私が通常使用するのは、ENVを使用するYamlであり、デフォルトを提供します。たとえば、YAMLをERBして、ENV変数を含めることができます。

foo:
  var: ENV["MY_CONFIG"] || "default_value"

読むときは、YamlにERBがロードされていることを確認する必要があります。

YAML.load(ERB.new(File.read("#{Rails.root}/config/app_config.yml")).result)

これを行うことにより、コードはdevで正常に機能しますが、環境で構成変数を設定することもできます。

于 2012-07-05T14:40:08.420 に答える
5

これは、いくつかの単純なシェルスクリプトを使用して比較的簡単に実行でき、herokuconfigまたはherokurelease:info v99を介して既存の変数を反復処理してから、heroku config:set k =v--appを設定します。

しかし、それが問題/痛み/摩擦である場合は、envvar構成内に多すぎる可能性があります。

于 2012-07-05T17:12:57.913 に答える
1

少し遅い答えですが、これがあなたが探しているものだと思います。

setteiというgemを開発しました。これにより、YAMLファイルを使用してアプリを構成できます。ただし、gemはデプロイ中にYAMLファイルを1つの環境変数としてシリアル化します。このようにして、両方の長所を活用できます。YAMLは管理/派生環境の作成を容易にし、ENVは12要素に準拠します。

于 2018-03-09T03:36:55.493 に答える