Подтвердить что ты не робот

Как развернуть приложение heroku с секретным файлом конфигурации yaml без фиксации файла?

В других проектах rails у меня будет локальная база данных .yml, а в репозитории исходного кода будет зафиксирован файл database.sample. При развертывании capistrano script, который символизирует общую версию database.yml для всех выпусков.

При развертывании в heroku используется git, и они, похоже, полностью переопределяют database.yml и делают что-то внутреннее.

Что все отлично и хорошо для database.yml, но что, если у меня есть конфигурации s3 в config/s3.yml. И я ставил свой проект на github, поэтому я не хочу передавать s3.yml, где каждый может видеть мои учетные данные. Скорее всего, он возьмет образец s3.sample, который люди будут переопределять со своими собственными настройками, и сохранить локальный файл s3.yml в моей рабочей директории.

Каков наилучший способ справиться с этим?

4b9b3361

Ответ 2

Сохраните учетные данные 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, в которой объясняются настройки разработки и т.д.

Ответ 3

Если вы используете бета Rails 4.1, попробуйте герой heroku_secrets, https://github.com/alexpeattie/heroku_secrets:

gem 'heroku_secrets', github: 'alexpeattie/heroku_secrets'

Это позволяет хранить секретные ключи в Rails 4.1 config/secrets.yml (который не установлен в исходное управление), а затем просто запускайте

rake heroku:secrets RAILS_ENV=production

чтобы сделать его содержимое доступным для heroku (он анализирует ваш файл secret.yml и подталкивает все в него к герою как переменные среды, в соответствии с документами лучшей практики heroku).

Ответ 4

Альтернативным решением является создание новой локальной ветки, где вы изменяете .gitignore, поэтому secret-file может быть нажата на герою. НЕ переместите эту ветвь в репозиторий Github.

Чтобы направить не-ведущую ветвь на герою, используйте:

git push heroku secret-branch:master

Больше информации можно найти на:
https://devcenter.heroku.com/articles/multiple-environments#advanced-linking-local-branches-to-remote-apps

Используйте heroku run bash, а затем ls, чтобы проверить, был ли ваш секретный файл нажат на герою или нет

Ответ 5

Вы также можете проверить драгоценный камень Figaro.