我正在使用Ruby on Rails 4,Ruby 2.2.2,并部署到Heroku。我的秘密变量配置了Heroku config:set,我想使用Rails.application.secrets.secret_key来访问我的秘密。
在开发和部署到Heroku时,使用Git和GitHub管理配置/机密文件的最佳方法是什么?我的配置文件如下:
development:
secret_key_base: <value>
test:
secret_key_base: <value>
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
# Amazon credentials
s3_bucket_name: <%= ENV["S3_BUCKET_NAME"] %>
aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>
aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %>
aws_region: <%= ENV["AWS_REGION"] %>
aws_cloud_front: <%= ENV["AWS_CLOUD_FRONT"] %>
# Twitter credentials
twilio_token: <%= ENV["TWILIO_TOKEN"] %>
twilio_sid: <%= ENV["TWILIO_SID"] %>
twilio_number: <%= ENV["TWILIO_NUMBER"] %>
我已经将更改推送到我的文件,即使它在.gitignore文件中也是如此,因为它过去曾被Git跟踪过。我停止在Git上跟踪我的config / secrets.yml文件,所以我不推送更改,但是当我从master下拉时,我的config / secrets文件被覆盖只有生产凭据。
答案 0 :(得分:1)
可以完全从git存储库中删除文件,但这很乏味。
但是,您可以轻松地将其从当前文件中删除。使用git rm yourfile
删除它并提交并推送它。这将删除您的本地文件,因此您可能希望先复制它。您可以在提交删除后将其添加回来。
请注意,.gitignore不涉及已受版本控制的文件。但是,明确删除这些文件是有效的。不应再追踪该副本。
答案 1 :(得分:0)
Git并没有提供部分拉动的方法,但在您的情况下,您需要做的就是为生产和开发定义具有相同名称的环境变量键。这样做将允许您单独保留文件并在本地和生产环境中使用值键,而无需更改任何更改。如果您想在不对此文件进行任何更改的情况下推送新提交,则可以使用
执行此操作var str = "Persons: Amy, bertha, Charlie, Donkey, Evy, Felicia, Ghunter, Hercules, Indica, Jody, Katy, Linsay, Moony, Nigel, Opethry, Phil, Quinton, Ricial, Stefany, Trudy, Ursla, Vlinder, Wendy, Xion, Yvy, Zulu";
var arr = str.split(' ').map(word => word.substr(0, 100)).reduce((acc, word) => {
acc.length += word.length + 1;
if (acc.length > 100) {
acc.length = word.length - 1;
acc.lines.push([word]);
} else {
acc.lines[acc.lines.length - 1].push(word);
}
return acc;
},{lines: [[]], length: -1}).lines.map(line => line.join(' '));
console.log(arr);
这将允许您将此文件保留在本地,而不会将其与其余更改一起推送到git。不幸的是,我不知道如何做相反的事情并排除某些文件。
答案 2 :(得分:0)
如果你提交的文件中有秘密,你无法轻易更改/旋转,有几种方法可以从git中完全删除以前提交的敏感信息。
Github指南有good article。