Ответ 1
Heroku имеет некоторые рекомендации по этому вопросу -
В других проектах 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 в моей рабочей директории.
Каков наилучший способ справиться с этим?
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, попробуйте герой 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).
Альтернативным решением является создание новой локальной ветки, где вы изменяете .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
, чтобы проверить, был ли ваш секретный файл нажат на герою или нет
Вы также можете проверить драгоценный камень Figaro.