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

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

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

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

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

5 ответов


Heroku есть некоторые рекомендации по этому -

http://devcenter.heroku.com/articles/config-vars


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


Если через рельсы бета 4.1, попробуйте heroku_secrets камень, из https://github.com/alexpeattie/heroku_secrets:

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

Это позволяет хранить секретные ключи в Rails 4.1 л!--7-->настройка/секреты.в формате YML (который не зарегистрирован в системе управления версиями), а затем просто запустите

rake heroku:secrets RAILS_ENV=production

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


альтернативным решением является создание нового местного отделения где вы изменить .gitignore так секрет-файлом можно нажать на heroku. НЕ нажмите эту ветку на ваше репозиторий Github.

чтобы подтолкнуть ветку non-master к heroku, используйте:

git push heroku secret-branch:master

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

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


вы также можете проверить Фигаро камень.