ProgramingTip

`database.yml` 파일 내의 환경 변수에 액세스하지 못함

bestdevel 2020. 11. 19. 21:49
반응형

`database.yml` 파일 내의 환경 변수에 액세스하지 못함


development.yml파일에 다음과 같은 개발 섹션이 있습니다.

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

를 통해 레일을 통해 콘솔을 bundle exec rails console입력 ENV['APP_USER_POSTGRES_PASSWORD']하면 로컬 프로필에 DB 암호가 반환됩니다. 그러나 Rails 서버를 시작하면 DB에 강력한 수 없어서 실패합니다.

PGError FATAL:  password authentication failed for user "app_user"

이 이전에 DB 암호를 통해 액세스 시도하는 일반 텍스트로 입력 할 때 작동 ENV['...']했지만 분명한 파일에서 암호를 완전히 유지하고 싶습니다 (코드 저장소에서 제외). 보안되지 않은 다른 변경 사항을 database.yml파일에 계속 커밋 할 수 있습니다.

내가 놓친 구문에 특별한 것이database.yml있습니까? 아니면 파일이로드 될 때 어떤 MM 환경 변수를 사용할 수 없습니까?


업데이트 : 일부 사람들은 Rails 4.2.xx에서 작동하지 않습니다 고 의견을보고합니다. 나는 직접 시도하지 즉시 시도하지 않습니다.


아, 해결책을 찾았습니다. 역할 루비를 이슬람입니다.

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

최신 Rails 버전을 실행하는 경우 짧고 빠른 솔루션! 다음 명령을 실행하십시오.

spring stop

.. 그런 다음 rails console또는 다른 rails 명령을 실행하십시오. 내 문제는 새 ENV 변수를 새로 고치거나 선택하기 위해 Spring 서버를 다시 시작해야한다는 것입니다. Rails 콘솔을 시작하고 있었는데 Spring을 종료 할 때까지 볼 수 없었습니다.

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

문제 해결에 도움이되는 또 다른 도구-다음 명령을 사용하여 database.yml 구성을 인쇄합니다. Rails 콘솔 내에서 실행하는 것을 선호합니다. 그 후 awesome_print를 사용하여 예쁘게 만들 수 있습니다.

이내 rails console:

puts ActiveRecord::Base.configurations

... 또는 awesome_print 사용

ap ActiveRecord::Base.configurations

또는 대신 명령 줄에서 :

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

참고 URL : https://stackoverflow.com/questions/8686215/failing-to-access-environment-variables-within-database-yml-file

반응형