2012-01-27 4 views
1

私はFacebookのアプリケーションをRailsで作成していて、Herokuでホストしています。Git - PushしてDev Configを展開して削除するには

ヘロクでは、レポをサーバーにプッシュすることで展開します。

私がこれを行うとき、私は自動的にいくつかのdevの設定(例えば、Facebookの秘密)を本番設定に変更したいと思います。

これを行うにはどうすればよいですか?ジットフック?

答えて

4

Gitフックや他の方法を使用してデプロイ時に実際のコードを変更したくない場合は、この状況を処理するための共通の方法がいくつかあります。

環境ベースの設定

本番があなたのリポジトリに構成設定値持つ気にしない場合は、環境に基づいて、それらを作ることができます。

# config/application.yml 

default: 
    facebook: 
    app_id: app_id_for_dev_and_test 
    app_secret: app_secret_for_dev_and_test 
    api_key: api_key_for_dev_and_test 

production: 
    facebook: 
    app_id: app_id_for_production 
    app_secret: app_secret_for_production 
    api_key: api_key_for_production 

# config/initializers/app_config.rb 

require 'yaml' 

yaml_data = YAML::load(ERB.new(IO.read(File.join(Rails.root, 'config', 'application.yml'))).result) 

config = yaml_data["default"] 
begin 
    config.merge! yaml_data[Rails.env] 
rescue TypeError 
    # nothing specified for this environment; do nothing 
end 

APP_CONFIG = HashWithIndifferentAccess.new(config) 

は今、あなたは、例えば、APP_CONFIG[:facebook][:app_id]のために、を介してデータにアクセスすることができ、その値は自動的にアプリケーションがで起動された環境に基づいて異なるだろう

環境:私は時々、このようなものを使用します。変数ベースの設定

もう1つのオプションは、環境変数を使用して本番データを指定することです。 Herokuはconfig varsでこれを行うことができます。

facebook_app_id = ENV['FB_APP_ID'] || 'some default value' 
  • がコンソールに入力して、Herokuの上の生産コンフィグVARを作成します:

    (多分、オプションのデフォルト値を使用して)環境に基づいた値を使用するようにコードを設定

    1. heroku config:add FB_APP_ID=the_fb_app_id_to_use 
      

    ENV['FB_APP_ID']生産上のthe_fb_app_id_to_use(Herokuの)、および0でありますの開発とテスト。

    上記のHerokuのドキュメントには、この戦略に関するさらに詳しい情報があります。

  • +0

    今のところ、これは私が行った解決策です。それは素晴らしい作品です。ありがとうございました。また、HashWithIndifferentAccessの説明は、あなたがそれを見たことがないなら面白いです:http://as.rubyonrails.org/classes/HashWithIndifferentAccess.html – andrewheins

    0

    あなたは、チェックアウト上で自動的に実行smudge」スクリプトに基づいて、content filterのアイデアを探索することができます。

    content filter

    あなたは宣言します:その実行環境を認識し、生成することができ

    • いくつかの(バージョン管理)テンプレートファイル
    • いくつかの値ファイル
    • (バージョン管理)smudgeスクリプトを値ファイルからの必要な(バージョン管理されていない)最終ファイルまたはGitの外部の他のソースからの(機密情報のための) po。
    関連する問題