본문 바로가기

IT/RUBY

Ruby On Rails, Windows에서 Credentials 편집 방법

1. credentials.yml.enc

 

Rails 5.2 버전부터 프로젝트를 새로 생성하였을 때 config/secrets.yml이 생성되지 않고 config/credentials.yml이 생성됩니다.

 

Rails의 Github에 credentials에 대해 아래와 같이 설명되어 있습니다.

 

 

config/credentials.yml.enc를 추가하여 제품 또는 애플리케이션의 암호를 저장합니다. config/master.key 또는 ENV ["RAILS_MASTER_KEY"]을 이용하여 암호화된 repo에 AWS 등의 서비스에 대한 인증 자격 증명을 직접 저장할 수 있습니다.

 

 

이전의 Rails에서는 비밀번호 등의 정보를 환경변수로 지정하여 관리하였지만, 환경변수로 설정할 경우 환경변수가 너무 많아지거나 버전관리가 힘들었기 때문에, Credentials 기능을 사용하여, 정보를 리포지토리에서 관리할 수 있는 기능입니다.

 

credentials.yml.enc의 내용은 아래와 같이 암호화 되어 있어서, 여기서 편집할 수 없고 rails 커맨드를 이용하여 편집해야 합니다.

 

#credentials.yml.enc
l0QzvG0PqQl/0rnLnl9Wj63efEpgyLcoPppyyO0bhkd4C8IwcTACOETGOaZKIe3PnLUR5ku

 

MAC에서는 .bash_profile에 환경변수로 EDITOR를 등록하여 아래의 명령어를 입력하면 편집이 가능하지만, 윈도에서는 약간 다른 방법이 필요합니다.

 

$ EDITOR="vi" bin/rails credentials:edit

2. Windows에서 Credentials 편집 방법

 

・ 해당하는 프로젝트에서 터미널을 열어, rails credentials:edit이라는 명령어를 입력해보면 에러가 발생합니다.

 

C:\Users\daily_schedule>rails credentials:edit
No $EDITOR to open file in. Assign one like this:

EDITOR="mate --wait" bin/rails credentials:edit

For editors that fork and exit immediately, it's importanotherwise the credentials will be saved immediately with

 

・ 읽어보면, 파일을 열 수 있는 EDITOR가 없습니다. EDITOR를 설정하라는 의미입니다.

 

・ CMD의 SET 명령어를 사용하여 EDITOR를 설정하겠습니다. SETX 명령어를 이용하여 환경변수에 EDITOR를 설정하는 방법도 있지만, SET을 이용하도록 하겠습니다. SET과 SETX의 차이점은, SET해당 터미널이 활성화되어 있는 동안에만 적용되고, SETX환경변수에 등록하여 계속 적용되는 것입니다.

 

・ 먼저, 편집에 사용하실 텍스트 에디터의 경로를 알아야 합니다! 저는 그냥 VSCode를 이용하도록 하겠습니다.

 

・ 경로를 찾으셨다면 터미널에 아래와 같은 명령어를 입력합니다.

 

//set EDITOR="텍스트에디터 경로" -w -n
C:\Users\daily_schedule>set EDITOR="C:\Users\AppData\Local\Programs\Microsoft VS Code\Code.exe" -w -n
//credentials 편집 실행
C:\Users\daily_schedule>rails credentials:edit

 

・ 잠시 기다리시면, 아래와 같이 새창이 열리고 편집 화면이 나옵니다.

 

 

 

・ 저장하고 종료하시면, New credentials encrypted and saved.이라고 나오며, 다시 확인해보시면 편집되었음을 확인할 수 있습니다.

3. 오류

rails rails credentials:edit를 입력하였지만, 아래와 같은 오류가 발생할 경우가 있습니다.

 

Adding config/master.key to store the master encryption key: abcdebc350e5c7d30a14eb99bbe1b2df

Save this in a password manager your team can access.

If you lose the key, no one, including you, can access anything encrypted with it.

      create  config/master.key

C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activesupport-5.2.2/lib/active_support/message_encryptor.rb:206:in `rescue in _decrypt': ActiveSupport::MessageEncryptor::InvalidMessage (ActiveSupport::MessageEncryptor::InvalidMessage)
        from C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activesupport-5.2.2/lib/active_support/message_encryptor.rb:184:in `_decrypt'
        from C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activesupport-5.2.2/lib/active_support/message_encryptor.rb:157:in `decrypt_and_verify
        ....

 

config/master.key 파일과 credentials.yml.enc 파일을 삭제하고 다시 실행하면 정상적으로 편집할 수 있습니다.

 

・ 그럼 끝!