他のRailsプロジェクトでは、ローカルのdatabase.ymlがあり、ソースコードリポジトリではdatabase.sampleファイルのみをコミットします。デプロイするときに、データベースの共有バージョンをシンボリックリンクするcapistranoスクリプトすべてのリリースに.yml。
Herokuにデプロイする場合、gitが使用され、database.ymlを完全にオーバーライドして、内部で何かを実行しているように見えます。
これはすべて問題なく、database.ymlにとっては良いことですが、config /s3.ymlにs3構成がある場合はどうなりますか。そして、私は自分のプロジェクトをgithubに置いているので、誰もが私の資格情報を見ることができるs3.ymlをコミットしたくありません。むしろ、サンプルs3.sampleをコミットして、ユーザーが独自の設定でオーバーライドし、ローカルのs3.ymlファイルを作業ディレクトリでコミットしないようにします。
これを処理するための最良の方法は何ですか?
Herokuにはこれに関するガイダンスがあります-
別の解決策は、新しいlocal-branchを作成して、.gitignoreを変更することですsecret-fileはherokuにプッシュできます。 しないでくださいこのブランチをGithubリポジトリにプッシュします。
非マスターブランチをherokuにプッシュするには、次を使用します。
git Push heroku secret-branch:master
詳細については、以下をご覧ください。
https://devcenter.heroku.com/articles/multiple-environments#advanced-linking-local-branches-to-remote-apps
使用する heroku run bash
次にls
を押して、シークレットファイルがherokuにプッシュされているかどうかを確認します
S3認証情報を環境変数に保存します。
$ cd myapp
$ heroku config:add S3_KEY=8N029N81 S3_SECRET=9s83109d3+583493190
Adding config vars:
S3_KEY => 8N029N81
S3_SECRET => 9s83109d3+583493190
Restarting app...done.
アプリ内:
AWS::S3::Base.establish_connection!(
:access_key_id => ENV['S3_KEY'],
:secret_access_key => ENV['S3_SECRET']
)
開発セットアップなどを説明しているHeroku Config Varsドキュメント を参照してください。
Rails 4.1ベータ版を使用している場合は、 https://github.com/alexpeattie/heroku_secrets :からheroku_secretsgemを試してください。
gem 'heroku_secrets', github: 'alexpeattie/heroku_secrets'
これにより、秘密鍵をRails 4.1'sconfig/secrets.yml(にチェックインされていない)に保存できますソース管理)そして実行するだけ
rake heroku:secrets Rails_ENV=production
そのコンテンツをherokuで利用できるようにします(herokuのベストプラクティスドキュメントに従って、secrets.ymlファイルを解析し、その中のすべてを環境変数としてherokuにプッシュします)。
Figarogemをチェックすることもできます。
Heroku + Build&Deploy-timeSecretsでこれを調べます。 Herokuがサポートしているものではないようです。これは、Railsアプリの場合、たとえばプライベートリポジトリから取得するためにBUNDLE_GITHUB__COMをコミットする以外に方法がないことを意味します。
Herokuにビームを送信する前に、CIバンドルプライベート部門を作成する方法があるかどうかを確認します