Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Ruby에서 환경 변수를 사용하는 방법

환경 변수는 키/값 쌍이며 다음과 같습니다.

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 키를 비공개로 유지하는 데 유용한 도구인 환경 변수에 대해 배웠습니다.

Ruby에서 환경 변수를 사용하는 방법

이 기사를 친구들과 공유하여 더 많은 사람들이 찾을 수 있도록 해주세요 🙂

읽어주셔서 감사합니다!