Any time you have files with sensitive data like
config.yml
you MUST NOT commit them to your repository. I'll show you an example.
Suppose you have a yaml file with some username and password:
# app/config/credentials.yml
credentials:
username: foo
password: bar
If you want to hide the foo and the bar values, remove this file from your repository, but add a distribution file that aims to maintain username and password fields, but without any real values:
# app/config/credentials.yml.dist
credentials:
username: ~
password: ~
During installation you can get this file by copying app/config/credentials.yml.dist to app/config/credentials.yml.
Also, remember to add app/config/credentials.yml to your .gitignore file.
Its the same with api keys:
# app/config/config.yml
config:
credentials:
username: foo
password: bar
api_stuffs:
api_foo: fooooo
api_secret: baaaaar
api_token: tooooken
This works well for configuration files, and is a good pattern that saves you every time you need to share the structure of a configuration but not sensitive data. Init files, configurations and so on.