컴퓨터에서 명령을 실행할 때마다 다른 프로그램에서 해당 명령을 실행하고 있습니다. 그 부모 프로그램은 그 자식에게 설정을 제공 할 수 있습니다. 이들은 일반적으로 환경 변수으로 알려져 있습니다.
Mac에서 터미널 창을 열면 쉘이 표시됩니다. 이 컴퓨터에 대한 명령 줄 인터페이스입니다. 터미널 프로그램 내부에서 실행 중입니다. 터미널 프로그램은 자체 도크 또는 Spotlight 또는 Finder (실행 방법에 따라 다름)에서 실행됩니다. 확장자로 rails server
을 실행하여 Rails 프로그램을 실행하면 rails
명령이 쉘에 의해 실행 중입니다.
셸에서 환경 변수를 설정하는 방법에는 여러 가지가 있습니다. 터미널에서 export
을 실행하면 전체 묶음을 볼 수 있습니다. 쉘이 자동으로 일부를 설정합니다. 일반적으로 홈 디렉토리에 HOME
, 실행 파일을 찾을 위치는 PATH
, 사용자 이름은 USER
입니다. $
부호를 앞에 붙여서이 값을 인쇄 할 수 있습니다. export
명령을 사용하여 직접 설정할 수도 있습니다. 당신이 export
당신이 그 터미널을 닫을 때까지에만 존재하며, 새로운 단말기로 이월되지 않습니다 사용하여 설정
[email protected] ~$ echo $USER
bob
[email protected] ~$ echo $HOME
/Users/bob
[email protected] ~$ export MYVAR="whatever"
[email protected] ~$ echo $MYVAR
whatever
아무것도. 터미널을 열었을 때 실행되는 파일에 export
명령을 넣을 수 있습니다. Bash은 Mac의 기본 쉘이므로 ~/.bashrc
파일을 편집하여 모든 단말기에서 사용할 수 있습니다.
그럼 rails server
명령으로 돌아가십시오. 그 비밀을 소스 컨트롤에 맡길 필요가 없도록 SECRET_KEY
환경 변수를 제공한다고 가정 해 봅시다. 위의 그림과 같이 .bashrc
에 넣을 수 있습니다. 당신이 당신의 서버를 실행할 때 또한 명령 이전에 설정하여, 그것을 제공 할 수있다 : 또한 파일에서 설정을 관리 할 수 Figaro 및 dotenv 같은 추가 기능을 사용할 수 있습니다
[email protected] rails_app$ SECRET_KEY=abc1234 rails server
. Ruby 내부에서 ENV
은 해시 일뿐입니다. Ruby 자체에서 제공하는 특별한 해시가 아니라 해시 일뿐입니다. 모든 코드는 키를 추가하거나, 키를 삭제하거나, 값을 변경할 수 있습니다. 나는 dotenv 나 Figaro의 코드를 보지 못했지만 그들이하는 일은 무엇이든간에 - 그들은 initializer을 통해 스스로로드하고, 환경 변수가 구성된 파일을 읽고,이 환경 변수를 ENV
에 추가합니다.Alex P
의 답을 단순화하기 위해