티스토리 뷰

프로그래밍 공부/Ruby on Jets : 서버리스

Ruby on Jets : 환경변수 등록

마음 따뜻한 개발자, 나른한 하루 2020. 1. 23. 00:46

Jets에서 환경변수 설정에 있어 Figaro Gem과 연동해서 쓰려 할 경우 이상하게 Jets에서는 Figaro Gem을 제대로 설치했음에도 불구하고 인식을 못합니다.

하지만 다행스럽게도 Jets에는 기본적으로 환경변수를 지원을 합니다.

 

이번 시간에서는 Jets에서 기본적으로 지원하는 기능을 통해 환경변수를 등록하는 법에 대해 알아보겠습니다.

 

 

  • 환경변수 개념

환경변수는 쉽게 말하면 "치환" 입니다.

만약 코드 내 중요한 정보에 있어 숨겨야할 경우 정보의 표현을 치환을 통해 은닉처리할 때 많이 쓰입니다.

 

예를들어, Jets 내 데이터베이스를 설정하는  database.yml  파일을 살펴보겠습니다.

## config/database.yml

default: &default
  adapter: postgresql
  encoding: utf8
  host: "15.163.72.42"
  username: "kcm4674"
  password: "123456a"
  pool: 5

위 코드가 Github에 배포 후,  database.yml  파일 내에 데이터베이스 정보가 그대로 드러나기에는 너무나도 큰 리스크입니다.

 

그래가지고 개발자들은 환경변수를 이용해서 다음과 같이 표현을 합니다.

## [환경변수 적용] config/database.yml

default: &default
  adapter: postgresql
  encoding: utf8
  host: <%= ENV['DATABASE_HOST'] %>
  username: <%= ENV['DATABASE_USER_ID'] %>
  password: <%= ENV['DATABASE_USER_PASSWORD'] %>
  pool: 5

 

그럼 치환된 내용은 어디있냐?

바로 환경변수를 설정하는 파일 안에 등록을 해놓습니다.

## .env

DATABASE_HOST: "15.163.72.42"
DATABASE_USER_ID: "kcm4674"
DATABASE_USER_PASSWORD: "123456a"

 

그러면 이런 의문이 생길겁니다.

"아니, 어차피 환경설정을 설정한 .env 파일이 Github에 업로드 되면 말짱 꽝 아닌가요?"

 

하지만 이러한 중요 정보가 담긴 파일이 Github에 업로드되는걸 방지하는 것이 있는데, 그것은 바로  .gitignore  입니다.

.gitignore에 대한 개념은 다음 문서를 참고해주세요.

 부록  .gitignore 개념 [클릭]

 

 

  • 환경변수 파일 설명

Jets에서는 프로젝트를 생성 시 다음과 같은 기본 (숨김)파일들이 존재합니다 : .env, .env.development, .env.test

 

 

 참고  혹시 .env 와 같은 숨김파일이 안보인다면 우측에 보이는 톱니바퀴 아이콘을 클릭 후, Show Hidden Files 를 클릭(숨김파일 활성화)

 

hidden 파일 visiable 활성화

 

 

1) .env

Environment에 관계없이 어떤 환경에서든 환경변수가 적용되는 파일입니다.

## .env
DB_TYPE: "postgresql"
## 터미널

ubuntu:~/environment/catch (master) $ JETS_ENV=production jets c
2.5.3 :001 > ENV['DB_TYPE']
=> "postgresql"

ubuntu:~/environment/catch (master) $ JETS_ENV=development jets c
2.5.3 :001 > ENV['DB_TYPE']
=> "postgresql"

ubuntu:~/environment/catch (master) $ JETS_ENV=test jets c
2.5.3 :001 > ENV['DB_TYPE']
=> "postgresql"

 

2) .env.development

Development Environment에만 환경변수가 적용되는 파일입니다.

## .env
DB_TYPE: "postgresql"
## 터미널

ubuntu:~/environment/catch (master) $ JETS_ENV=production jets c
2.5.3 :001 > ENV['DB_TYPE']
=> nil

ubuntu:~/environment/catch (master) $ JETS_ENV=development jets c
2.5.3 :001 > ENV['DB_TYPE']
=> "postgresql"

ubuntu:~/environment/catch (master) $ JETS_ENV=test jets c
2.5.3 :001 > ENV['DB_TYPE']
=> nil

 

3) .env.test

Test Environment에만 환경변수가 적용되는 파일입니다.

## .env
DB_TYPE: "postgresql"
## 터미널

ubuntu:~/environment/catch (master) $ JETS_ENV=production jets c
2.5.3 :001 > ENV['DB_TYPE']
=> nil

ubuntu:~/environment/catch (master) $ JETS_ENV=development jets c
2.5.3 :001 > ENV['DB_TYPE']
=> nil

ubuntu:~/environment/catch (master) $ JETS_ENV=test jets c
2.5.3 :001 > ENV['DB_TYPE']
=> "postgresql"

 

 

  • .gitignore 정의

Ruby on Jets에서는 다행히도 환경변수 파일(.env, .env.development, .env.test)에 대해 기본적으로 설정이 되어있습니다.

 

 

 

  • AWS Lambda Deploy

.env 파일에 환경변수가 작성된 채로 AWS Lambda에 Deploy 시, 모든 람다 함수에 자동으로 환경변수가 적용이 됩니다.

 

 

  • 관련자료

1. Jets Docs : Environment Variable [클릭]

댓글
댓글쓰기 폼
공지사항
Total
37,626
Today
18
Yesterday
231
링크
«   2020/08   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
글 보관함