Rails 6의 경우
Rails 6부터는 위와 같이 Credentials을 환경별로 생성할 수 있습니다.
EDITOR=vi rails credentials:edit --environment development
--environment옵션에 내가 원하는 환경 이름을 넣어줄 경우 /config/credentilas에 yml.enc 파일과 key 파일이 생기게 됩니다.
이럴 경우 자동으로. key 파일은. gitignore에 등록되어집니다.
Rails 6에서의 명령어
각 환경의 Credentials 파일에 접근방법은 아래와 같이 할 수 있습니다.
production 환경은 master.key를 사용하여 접근하게 설정하였으나, 원한다면 production 파일 환경 옵션을 주고, master.key를 production.key로 대체하는 방법도 있습니다.
주의해야 할 점으로 production 환경으로 접근할 때에는 --environment의 인자로 prodcution값을 전달하면 안 된다는 것입니다. 만약 production 값을 전달할 경우 새롭게 환경이 생기게 됩니다.
EDITOR=vi rails credentials:edit #production 환경
- 키 위치: /config/master.key
- 암호화된 파일 위치: /config/credentials.yml.enc
EDITOR=vi rails credentials:edit --environment development #development 환경
-
- 키 위치: /config/credentials/development.key
- 암호화된 파일 위치: /config/credentials/development.yml.enc
EDITOR=vi rails credentials:edit --environment test #test 환경
-
- 키 위치: /config/credentials/staging.key
- 암호화된 파일 위치: /config/credentials/staging.yml.enc
- EDITOR=vi rails credentials:edit --environment staging#staging 환경
- 키 위치: /config/credentials/test.key
- 암호화된 파일 위치: /config/credentials/test.yml.enc
Rails 5.2의 경우
rails 5.2에서는 각 환경별로 존재하지 않고, 하나의 credentilas 파일만을 사용할 수 있습니다.
이를 각 환경에서 사용하기 위해서는 Credentials 파일을 로드할 때, 환경마다 직접 경로를 지정해주도록 config/application.rb 에 코드를 추가시켜주어야 합니다.
https://github.com/rails/rails/pull/33521#issuecomment-449403068 (이 글을 참고하여 작성하였습니다.)
config/application.rb에 다음과 같이 코드를 추가시켜주면 됩니다.
해당 코드에서 Rails.env.production? 부분은 RAILS_ENV의 값이 production 인지 확인하는 부분입니다.
if. production 인 경우 기존 레일즈 5.2에 사용하던 config/master.key를 토대로 config/credentilas.yml.enc를 해독하여 가져옵니다.
그렇지 않을 경우, RAILS_ENV의 값을 참고하여 Rails 6와 같은 경로에 key를 참고하여 yml.enc파일을 생성해줍니다.
이를 하기 위해서는 먼저, /config/credentials/development.key 에 직접 수동으로 32자리 키를 만들어 위치시켜야 합니다.
EDITOR=vi RAILS_ENV=development rails credentials:edit
그리고 커맨드에 RAILS_ENV의 값을 직접 전달함으로써, 원하는 환경에 맞는 credentials파일이 생성되고 편집할 수 있게 됩니다.
Rails 5.2에서의 명령어
각 환경의 Credentials 파일에 접근방법은 아래와 같이 할 수 있습니다.
production 환경은 master.key를 사용하여 접근하게 설정하였으나, 원한다면 config/application.rb의 production인지 체크하는 부분을 수정함으로써 경로를 바꿔 각 config/credentials/production.key 와 yml.enc 에 접근하도록 설정할 수 있습니다.
주의해야 할 점으로 production 환경의 파일을 편집할 때에는 RAILS_ENV=production을 직접 지정해야 한다는 것입니다. 이를 하지 않을 경우 development 환경으로 접근하게 됩니다.
EDITOR=vi RAILS_ENV=production rails credentials:edit #production 환경
- 키 위치: /config/master.key
- 암호화된 파일 위치: /config/credentials.yml.enc
EDITOR=vi RAILS_ENV=development rails credentials:edit #development 환경
- 키 위치: /config/credentials/development.key
- 암호화된 파일 위치: /config/credentials/development.yml.enc
EDITOR=vi RAILS_ENV=test rails credentials:edit #test 환경
- 키 위치: /config/credentials/staging.key
- 암호화된 파일 위치: /config/credentials/staging.yml.enc
EDITOR=vi RAILS_ENV=staging rails credentials:edit #staging 환경
- 키 위치: /config/credentials/test.key
- 암호화된 파일 위치: /config/credentials/test.yml.enc