61

development.yml 파일의 다음 developement에 섹션을했다 : 나는 bundle exec rails console를 통해 레일 콘솔을 열고 ENV['APP_USER_POSTGRES_PASSWORD']를 입력하면이 database.yml` 파일`내 환경 변수에 액세스하는 데 실패

development: 
    adapter: postgresql 
    host: localhost 
    database: testtb 
    username: app_user 
    password: ENV['APP_USER_POSTGRES_PASSWORD']  <= Troublesome line 

나는 다시 DB 암호를 얻을 내 로컬 프로필에 지정했습니다. 내 레일 서버를 시작할 때 그러나, 내가 DB 암호가 실제로 오히려 액세스를 시도하는 것보다, 일반 텍스트에서 입력했을 때이 이전에 작업 한

PGError FATAL: password authentication failed for user "app_user" 

과 실패의 DB에 연결할 수 없습니다 ENV['...']을 통해 이루어졌지만 확실한 이유 때문에이 파일의 실제 암호를 database.yml 파일에 대한 다른 보안되지 않은 변경 사항을 커밋 할 수있을 때까지 그대로 유지하려는 것입니다.

이 없거나 database.yml 파일을로드 할 때 사용할 수없는 환경 변수가 있습니까?

+0

당신은 확인 할 수 있습니다 구성 및 로컬 변수에 대한이 가이드 아웃 : http://railsapps.github.io/rails-environment-variables.html tl; dnr : figaro gem이 유용 할 수 있습니다. – Antzi

+0

@Antzi 피가로의 README에 따르면 Figaro는 database.yml을 figaro config보다 먼저 읽으므로 지원하지 않습니다. – mahemoff

+0

업데이트 : Figaro는 모든 Rails 버전에서 database.yml에 대해 작동합니다. https : // github.co.kr/laserlemon/figaro/pull/100 – mahemoff

답변

162

업데이트 : 일부 사람들은이 주석이 Rails 4.2.x.x에서 작동하지 않는다고보고합니다. 나는 그것을 시도하지 않았다, 그래서 YMMV.


아, 마지막으로 간단한 해결책을 생각 - 그것은 루비 임베디드을 받아 들인다 :

password: <%= ENV['APP_USER_POSTGRES_PASSWORD'] %> 
+0

큰 성공! 확실히 작동합니다. Figaro는 당신 덕분에 자신의 문서를 업데이트해야합니다. – rcd

+5

예수 그리스도, 당신은이 검사에 얼마나 오래 머물렀고 내 암호를 다시 확인했는지 모른다. 감사! 나는 YAML이 마크 업 언어가 아니라 erb라는 것을 기억해야한다. –

+1

@ MikeH-R - 그걸 내가 마침내 알아 냈을 때의 느낌이었습니다. – jefflunt

16
당신이 새로운 레일 버전을 실행하는 경우

짧은하고 빠른 해결! 다음 명령을 실행

spring stop 

..then 실행 rails console 또는 다른 레일 명령을 사용합니다. 내 문제는 새 ENV vars를 새로 고침/픽업하기 위해 스프링 서버를 다시 시작해야한다는 것입니다. Rails 콘솔을 시작했고 Spring을 종료 할 때까지 볼 수 없었습니다.

이전 버전의 Rails는 Spring 서버를 사용하지 않았기 때문에이 문제가 발생하지 않았습니다.

문제를 해결하는 데 도움이되는 다른 도구 - 다음 명령을 사용하여 database.yml config를 인쇄하십시오. 명령 줄에서 실행할 수 있습니다,하지만 당신은 꽤 그것을 만들기 위해 awesome_print를 사용할 수 있기 때문에 나는 레일 콘솔에서이 작업을 실행하는 것을 선호 :

rails console 내 :

puts ActiveRecord::Base.configurations 

... 또는 awesome_print

를 사용하여
ap ActiveRecord::Base.configurations 

또는 대신 명령 줄에서 :

bin/rails runner 'puts ActiveRecord::Base.configurations' 
+2

왜이 대답을 왜 downvote할지 몰라요. 그것은 완벽하게 유효합니다 (또한 나를 위해 일했습니다). +1 – Kroltan

+0

감사합니다 @Kroltan, 사람들이 때로는 다른 사람들을 도와 줄만한 가치가있는 질문을 왜 하찮게 왜 그런지 이유를 밝히지 않는 것은 상당히 성가시다. 싫어하는 사람들은 내가 싫어할 것 같아. 그러나 나는 이것이 당신을 도와 줬기 때문에 기쁘다. – FireDragon

+2

필자는 레일 콘솔과 레일 러너 모두에 문제가 있었으며 새로운 env 변수를 선택하는 데 필요한 스프링 재설정으로 인해 모든 것이있었습니다! 감사 ;) – VAShhh

관련 문제