2016-05-26 8 views
2

Ruby on Rails 4、Ruby 2.2.2を使用しており、Herokuにデプロイしています。私は私の秘密変数をHerokuの設定で設定しています:私は秘密にアクセスするためにRails.application.secrets.secret_keyを使いたいと思います。git pullを実行するときにGithub上のファイルを無視する方法

Herokuを開発しているときにGitとGitHubで自分のconfig/secretsファイルを管理する最も良い方法は何ですか?それは過去にGitリポジトリによって追跡されていたので、私は.gitignoreファイルでもそれと私のファイルに変更をプッシュしていた

development: 
    secret_key_base: <value> 

test: 
    secret_key_base: <value> 

# Do not keep production secrets in the repository, 
# instead read values from the environment. 
production: 
    secret_key_base:   <%= ENV["SECRET_KEY_BASE"] %> 
    # Amazon credentials 
    s3_bucket_name:   <%= ENV["S3_BUCKET_NAME"] %> 
    aws_secret_access_key:  <%= ENV["AWS_SECRET_ACCESS_KEY"] %> 
    aws_access_key_id:   <%= ENV["AWS_ACCESS_KEY_ID"] %> 
    aws_region:    <%= ENV["AWS_REGION"] %> 
    aws_cloud_front:   <%= ENV["AWS_CLOUD_FRONT"] %> 

    # Twitter credentials 
    twilio_token: <%= ENV["TWILIO_TOKEN"] %> 
    twilio_sid: <%= ENV["TWILIO_SID"] %> 
    twilio_number: <%= ENV["TWILIO_NUMBER"] %> 

次のように私は私の設定ファイルを持っています。 Gitでconfig/secrets.ymlファイルを追跡していないので、変更をプッシュしませんが、masterからプルダウンすると、自分のconfig/secretsファイルが運用資格情報だけで上書きされます。

答えて

1

ファイルをgitリポジトリから完全に削除することはできますが、面倒です。

現在のファイルから簡単に削除できます。 git rm yourfileでそれを削除し、コミットして押します。これでローカルファイルが削除されるので、最初にコピーすることをお勧めします。削除をコミットした後に追加することができます。

.gitignoreは、すでにバージョン管理下にあるファイルには関係しません。しかし、このようなファイルを明示的に削除することは有効です。コピーはそれ以上追跡されるべきではありません。

0

Gitは部分的なプルの手段を提供していませんが、あなたの状況では、本番環境と開発環境の両方に同じ名前の環境変数キーを定義するだけです。そうすることで、ファイルをそのままにして、変更を加えることなく、ローカル環境と運用環境の両方でバリューキーを利用することができます。このファイルに変更を押さずに、新たなコミットをプッシュしたい場合は、

git update-index --asume-unchanged <filenameHere> 

を使用してこれは、あなたの変更の残りの部分とgitのためにそれを押さずに、ローカルでこのファイルを維持することができますことを行うことができます。残念ながら、逆を行い、プルで特定のファイルを除外する方法がわかりません。

0

あなたが簡単に変更/ローテーションできないことをコミットしたファイルに秘密がある場合、以前にコミットされた機密情報をgitから完全に削除するにはいくつかの方法があります。

Githubガイドにはgood articleがあります。

関連する問題