Hom*_*man 21 deployment yaml config heroku
在其他rails项目中,我有一个本地database.yml,在源代码库中只提交database.sample文件.在部署时,会使用capistrano脚本将database.yml的共享版本符号链接到所有版本.
当部署到heroku时,使用git并且它们似乎完全覆盖database.yml并在内部执行某些操作.
这对于database.yml来说一切都很好,但是如果我在config/s3.yml中有s3配置怎么办呢.我将我的项目放在github上,所以我不想提交s3.yml,每个人都可以看到我的凭据.它宁可提交一个示例s3.sample,人们将使用自己的设置覆盖它们,并在我的工作目录中保留一个本地s3.yml文件.
处理这个问题的最佳方法是什么?
ipr*_*101 15
Heroku对此有一些指导 -
http://devcenter.heroku.com/articles/config-vars
另一种解决方案是创建一个新的本地分支,您可以在其中修改.gitignore,以便将secret-file推送到heroku. 不要将此分支推送到您的Github仓库.
要将非主分支推送到heroku,请使用:
git push heroku secret-branch:master
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请访问: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.
Run Code Online (Sandbox Code Playgroud)
在您的应用中:
AWS::S3::Base.establish_connection!(
:access_key_id => ENV['S3_KEY'],
:secret_access_key => ENV['S3_SECRET']
)
Run Code Online (Sandbox Code Playgroud)
请参阅Heroku Config Vars文档,其中介绍了开发设置等.
小智 6
如果使用Rails 4.1 beta,请从https://github.com/alexpeattie/heroku_secrets尝试heroku_secrets gem :
gem 'heroku_secrets', github: 'alexpeattie/heroku_secrets'
Run Code Online (Sandbox Code Playgroud)
这允许您在Rails 4.1的config/secrets.yml(未检入源代码管理)中存储密钥,然后运行
rake heroku:secrets RAILS_ENV=production
Run Code Online (Sandbox Code Playgroud)
使其内容可用于heroku(它解析你的secrets.yml文件,并根据heroku最佳实践文档将其中的所有内容作为环境变量推送到heroku).
| 归档时间: |
|
| 查看次数: |
15146 次 |
| 最近记录: |