Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix .gitignore master.key bug. #374

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Fix .gitignore master.key bug. #374

wants to merge 1 commit into from

Conversation

jgorman
Copy link

@jgorman jgorman commented Aug 27, 2018

Rails 5.2 uses config/master.key to encrypt credentials.

https://medium.com/@wintermeyer/goodbye-secrets-welcome-credentials-f4709d9f4698

It is important to keep config/master.key out of git.

By default, Rails 5.2 initializes git and adds a .gitignore file which ignores the master.key file.

The git recipe currently unconditionally reinitalizes git even if has already been initialized by Rails.

The git recipe currently unconditionally replaces .gitignore with an outdated version. This results in the master.key file being committed into git. Once it has been committed it is difficult to entirely remove from the git history. A naive "git rm config/master.key" will leave the file in the git history, opening a security hole.

This PR fixes the git recipe to not reinitialize git if .git exists and to not clobber the Rails .gitignore file if it has already been set up.

This PR also refrains from removing all .gitignore and .gitkeep files. That doesn't seem useful or safe.

To reproduce the bug:

$ rails_apps_composer new git-bug-test -r git
$ cd git-bug-test
$ git ls-files config/master.key
config/master.key # Bug: master.key is checked into git.

Test the fix:

$ git clone [email protected]:jgorman/rails_apps_composer_pr.git
$ cd rails_apps_composer_pr
$ git co git-bug
$ rake reinstall

$ rails_apps_composer new git-bug-fixed -r git
$ cd git-bug-fixed
$ git ls-files config/master.key
$ # Fixed: master.key is not checked into git.

Test that git still gets initialized when Rails doesn't do it.

$ echo '--skip-git' > ~/.railsrc
$ rails_apps_composer new git-bug-old-rails -r git
$ cd git-bug-old-rails
$ git ls-files .gitignore
.gitignore # Older Rails: git and .gitignore are still set up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant