2014-06-22 1 views
2

ENV [SOME_VARIABLE]이 (가) mac 환경에서 표준 레일 설치로 데이터를 찾는 방법에 대해 궁금합니다.레일 앱이 ENV 변수를 가져올 위치를 어떻게 알 수 있습니까?

나는 figurearo 보석을 사용하여 극복 한 문제에 직면했지만 그것이 작동하지 않는 이유에 대한 나의 질문에 대답하지 못했습니다. 본인은 더 이상 문제를 해결하는 데 관심이 없지만 ENV [SOME_VARIABLE]이 해당 정보를 찾는 방법을 자세히 배우는 데 관심이 있습니다.

답변

3

컴퓨터에서 명령을 실행할 때마다 다른 프로그램에서 해당 명령을 실행하고 있습니다. 그 부모 프로그램은 그 자식에게 설정을 제공 할 수 있습니다. 이들은 일반적으로 환경 변수으로 알려져 있습니다.

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에 넣을 수 있습니다. 당신이 당신의 서버를 실행할 때 또한 명령 이전에 설정하여, 그것을 제공 할 수있다 : 또한 파일에서 설정을 관리 할 수 ​​Figarodotenv 같은 추가 기능을 사용할 수 있습니다

[email protected] rails_app$ SECRET_KEY=abc1234 rails server 

. Ruby 내부에서 ENV은 해시 일뿐입니다. Ruby 자체에서 제공하는 특별한 해시가 아니라 해시 일뿐입니다. 모든 코드는 키를 추가하거나, 키를 삭제하거나, 값을 변경할 수 있습니다. 나는 dotenv 나 Figaro의 코드를 보지 못했지만 그들이하는 일은 무엇이든간에 - 그들은 initializer을 통해 스스로로드하고, 환경 변수가 구성된 파일을 읽고,이 환경 변수를 ENV에 추가합니다.Alex P의 답을 단순화하기 위해

0

환경 변수

environment variables는 운영 체제에 정의되어 있습니다 - 그들을 사용하고자하는 모든 응용 프로그램에 사용할 수있는 의미 :

환경 변수가된다 수있는 동적 명명 된 값 집합은 실행중인 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미칩니다.

레일즈는 여러 가지 이유로 주로 보안을 위해 environment variables을 사용합니다. 응용 프로그램이 API 키 등의 좋아하는을 사용하는 경우 environment variables는 OS 레벨에서 액세스 할 수있는 방법으로 중요한 정보를 정의 할 수 있습니다 당신은 호스트에 레일즈 응용 프로그램을 실행하면

이는 해킹 당하고 코드가 해킹되면 해커는 ENV 기록이 OS에 저장되므로 해커가 데이터에 대한 전체 액세스 권한을 가질 수 없습니다.이 작동하는 방법

Alex의 대답에

설명 -

Rails "Secrets" YML 레일과 진보의

를 4.1 secrets 보석의 도입이다.

레일 4.1 config 폴더에 새로운 secrets.yml 파일을 생성합니다 : 이것은 당신이 당신의 레일 응용 프로그램에 지역의 모든 값을 유지 할 수 있습니다 제외하고, 당신에게 ENV 바르와 동일한 기능을 제공하도록 설계되었습니다 . 기본적으로이 파일에는 애플리케이션의 secret_key_base가 포함되어 있지만 은 외부 API에 대한 액세스 키와 같은 다른 비밀을 저장하는 데 사용될 수도 있습니다.

이 파일에 추가 된 비밀은 Rails.application.secrets를 통해 액세스 할 수 있습니다. 예를 들어 다음과 같은 경우 config/secrets.yml

development: 
    secret_key_base: 3b7cd727ee24e8444053437c36cc66c3 
    some_api_key: SOMEKEY 
관련 문제