Как развернуть приложение heroku с секретным файлом конфигурации yaml без фиксации файла? - PullRequest
20 голосов
/ 27 октября 2011

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

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

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

как лучше всего справиться с этим?

Ответы [ 5 ]

15 голосов
/ 27 октября 2011

У Героку есть рекомендации по этому вопросу -

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

9 голосов
/ 03 ноября 2016

Альтернативное решение - создать новую локальную ветвь , где вы измените .gitignore, чтобы secret-file можно было отправить в heroku. НЕ вставьте эту ветку в репозиторий 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, чтобы проверить, был ли ваш секретный файл передан герою или нет

8 голосов
/ 27 октября 2011

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

6 голосов
/ 28 января 2014

Если вы используете бета-версию 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 (он анализирует ваш файл secretts.yml и помещает все находящееся в нем heroku как переменные окружения, согласно документации по передовой практике heroku).

2 голосов
/ 25 ноября 2012

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

...