2017-09-10 6 views
1

私はHerokuでホストされているRailsプロジェクトPROJECTXを持っています。プロダクション設定とファイルを保存するために、別のリポジトリを使用していますPROJECTX-config。それはすることが可能である:Herokuでのデプロイ時にリポジトリをクローズする

  1. クローンPROJECTX-config設定、
  2. PROJECTX-config設定ファイルに、これは上で行わなければならないこと

注意を

  • シンボリックリンクの設定ファイルを、現在の設定ファイルを削除し、ヘロク。また、私はHerokuが環境変数を使用してconfigsを維持するオプションを持っていることを知っていますが、これは私が探しているものではありません。

    ありがとうございます!

  • +0

    いいえ - 代わりにenv varsを使用してください。 Herokuは一時的なファイルシステムを持っているので、他のリポジトリとシンボリックリンクすることはできません。 – max

    +0

    @maxすべての設定に環境変数を使用することはできません。また、私はファイルを維持するのではなく維持するのが面倒なので、appの設定はenvoroment変数に存在すべきではないと考えています。 –

    答えて

    2

    不可能です。

    各dynoは、最後に展開されたコード の新鮮なコピーで、独自の一時ファイルシステムを取得します。 dynoの稼働中に実行中の プロセスはファイルシステムを一時的なスクラッチパッドとして使用できますが、書き込まれたファイルは は他のdynoのプロセスには表示されず、 はdynoが停止したときに破棄されるかまたは を再起動します。たとえば、これは、 のアプリケーション展開のためにdynoが置き換えられ、通常の dyno管理の一部として1日に約1回のためにいつでも発生します。
    - レポAとレポBをマージし、Herokuのに結果をプッシュする(ポストコミットフックのような)セットアップの自動化のいくつかの種類をsetupeなどのルーブ・ゴールドバーグ・マシンなしhttps://devcenter.heroku.com/articles/dynos#ephemeral-filesystem

    あるいは、少なくともではありません。

    また、私はファイルを維持するのではなく維持するのが面倒なので、環境変数にはappの設定を含めないでください。

    ここではHerokuは同意しません。ある種のプロパティファイルに -

    varsは、このような設定を処理するための従来のアプローチは、ソースの下で彼らに を置くことです。これは エラーが発生しやすいプロセスです。特に、オープンソース アプリでは、アプリケーション固有のコンフィグレーション で別々の(およびプライベート)ブランチを維持する必要があります。
    より良い解決策は、環境変数 を使用して、コードからキーを離しておくことです。従来のホストでは、ローカルで作業している では、bashrcファイルに環境変数を設定できます。 Herokuでは、config varsを使用しています。 https://devcenter.heroku.com/articles/config-vars

    あなたが実際にENVのVARSに格納するために必要なもの過大評価されるかもしれないが - 。あなたはENVにAPIキーのような秘密を保存する必要があります。

    他の秘密の設定では、さまざまな宝石の設定をconfig/initializersに設定する必要があります。

    require 'yaml' 
    
    yaml = YAML.load_file(File.join(__dir__, 'conf.yml')) 
    
    def create_key(*components) 
        components.join('_').upcase 
    end 
    
    env_vars = yaml["production"].each_with_object({}) do |(key,value), memo| 
        key_components = [key] 
        if value.kind_of? Hash 
        value.each_pair do |k,v| 
         memo[create_key(*key_components.dup.push(k))] = v 
        end 
        else 
        memo[create_key(*key_components)] = value 
        end 
    end.each do |k,v| 
        system("heroku config:set #{k}=#{v}") 
        puts "Setting #{k} = #{v}; #{ $? }" 
    end 
    

    それともあなたもシリアライズ形式(JSONやYAML)での保存ができます

    それでもGUIを使用して考える場合

    はvarsのあなたが解析し、ENVを設定するために使用している恐ろしいが、その後、YAMLファイルを使用することです単一のenv var - 32kbの合計サイズ制限があります。

    関連する問題