환경 변수는 키/값 쌍이며 다음과 같습니다.
KEY=VALUE
이러한 변수를 사용하여 컴퓨터의 모든 프로그램 간에 구성 옵션을 공유합니다.
이것이 작동 방식과 ENV
를 사용하여 Ruby 프로그램에서 액세스하는 방법을 배우는 것이 중요한 이유입니다. 특수 변수.
환경 변수의 예 :
- 기본 편집기 구성
- 루비에 보석을 찾을 수 있는 위치 알려주기(
GEM_PATH
/GEM_HOME
) - 소스 제어(git)에 커밋할 필요 없이 API 키를 애플리케이션에 전달
- 운영 체제가 바이너리 파일(Windows의 경우 .exe)을 찾아야 하는 위치 정의
- Rails를 테스트/개발/프로덕션 모드로 시작하기
env
를 사용하여 모든 환경 변수 목록을 찾을 수 있습니다. Linux/Mac의 명령 및 set
Windows에서 명령.
예 :
PWD=/home/jesus SHELL=/usr/bin/zsh RUBY_ENGINE=ruby RUBY_VERSION=2.6.0 GEM_ROOT=/opt/rubies/ruby-2.6.0/lib/ruby/gems/2.6.0 # ...
목록이 꽤 길 수 있지만 외울 필요는 없습니다.
gem env
를 사용하여 모든 gem 관련 변수 및 구성을 인쇄할 수도 있습니다. 명령.
지금 :
Ruby에서 이러한 환경 변수에 액세스하려는 경우 사용할 수 있는 특수 개체가 있습니다.
어떻게 작동하는지 알아봅시다!
Ruby에서 환경 변수 사용하기
Ruby에는 해시처럼 작동하는 이 ENV 개체가 있으며 사용 가능한 모든 환경 변수에 액세스할 수 있습니다.
다음은 몇 가지 예입니다...
자신의 키가 몇 개인지 확인할 수 있습니다. :
ENV.size # 48
목록 가져오기 :
ENV.keys
특정 키에 액세스 :
ENV["GEM_HOME"] # "/home/jesus/.gem/ruby/2.6.0"
map &select와 같은 방법을 사용할 수도 있습니다.
ENV.select { |k,v| k.size < 4 }
하지만 Ruby 외부에서 이러한 환경 변수를 어떻게 설정합니까?
환경 변수 설정 방법
1회용으로 환경변수를 설정할 수 있습니다.
좋아요 :
API_KEY=1 ruby -e 'p ENV["API_KEY"]'
irb 외부의 터미널에서 이것을 사용하면 Ruby가 이 API_KEY
에 액세스할 수 있습니다. 가치.
이것은 API 키에 유용할 뿐만 아니라 Rails 모드를 설정하는 데에도 유용합니다.
예 :
RAILS_ENV=production rails console
기억 :
이것은 지금 실행 중인 이 프로세스에 대해 이 특정 환경 변수를 설정합니다.
API_KEY=1 <command>
를 수행하면 의미 ...
해당 명령에서만 작동합니다!
현재 터미널 세션에서 실행하는 다른 모든 명령에서 이 변수를 사용하려는 경우
이렇게 하세요 :
export API_KEY=1
지금 하면 :
ruby -e 'p ENV["API_KEY"]'
1
을(를) 받게 됩니다. , 접두사 변수가 없어도.
경고 :
ENV
를 사용하지 마세요. Ruby 애플리케이션 내에서 구성하는 것이 목적이 아닙니다. ENV는 Ruby 외부에서 들어오는 외부 설정을 읽기 위한 것입니다.
내부 구성 옵션에 대해 Dry-Configurable과 같은 gem을 사용해 보세요.
환경 변수의 중요한 속성
이러한 속성은 (예기치 않은) 동작을 설명하기 때문에 도움이 될 수 있습니다.
- 스냅샷 , 환경 변수는 프로그램을 시작할 때 설정되며 외부 변경의 영향을 받지 않습니다.
- 폐쇄된 환경 , 프로세스 내부의 변수를 변경해도(Ruby 프로그램은 프로세스임) 프로세스 외부의 환경 변수는 변경되지 않습니다.
- 환경 변수는 영구적이지 않습니다. , 컴퓨터를 재부팅하거나 터미널을 닫아도 환경 변수에 대한 변경 사항이 손실됩니다(
export
를 사용하더라도 Linux + Mac /set
Windows)
이것을 명심하십시오!
Rails 자격 증명
Rails 5.2는 API 키를 관리하는 데 도움이 되는 새로운 시스템을 도입했습니다.
자격 증명을 config/credentials.yml.enc
에 직접 저장하여 작동합니다. , 이것은 master.key
가 있는 경우에만 읽을 수 있는 암호화된 파일입니다. 파일.
아이디어는 credentials.yml.enc
만 커밋한다는 것입니다. 키를 비공개로 유지합니다.
새 자격 증명을 어떻게 추가합니까?
.enc
를 편집할 수 없습니다. 직접 파일을 제출하세요.
대신 이 명령어 사용 :
bin/rails credentials:edit
YAML 파일이므로 올바른 형식으로 지정해야 합니다.
지금 :
Rails 앱에서 다음과 같이 자격 증명을 읽을 수 있습니다...
Rails.application.credentials.github_api_key
동영상 튜토리얼 보기
요약
운영 체제 구성을 관리하고 API 키를 비공개로 유지하는 데 유용한 도구인 환경 변수에 대해 배웠습니다.
이 기사를 친구들과 공유하여 더 많은 사람들이 찾을 수 있도록 해주세요 🙂
읽어주셔서 감사합니다!