【发布时间】:2012-01-30 22:55:04
【问题描述】:
我的development.yml 文件有以下开发部分:
development:
adapter: postgresql
host: localhost
database: testtb
username: app_user
password: ENV['APP_USER_POSTGRES_PASSWORD'] <= Troublesome line
当我通过bundle exec rails console 打开rails 控制台并输入ENV['APP_USER_POSTGRES_PASSWORD'] 时,我会取回我在本地配置文件中指定的数据库密码。但是,当我启动我的 rails 服务器时,它无法连接到数据库,失败并显示
PGError FATAL: password authentication failed for user "app_user"
当我实际上以纯文本形式输入数据库密码而不是尝试通过ENV['...'] 访问它时,这以前是有效的,但出于显而易见的原因,我希望将实际密码完全保留在此文件之外(因此代码存储库之外),同时仍然能够向database.yml 文件提交其他非安全更改。
我缺少的语法有什么特别之处,或者在加载database.yml 文件时环境变量由于某种原因不可用?
【问题讨论】:
-
您可能想查看有关配置和局部变量的指南:railsapps.github.io/rails-environment-variables.html tl;dnr: figaro gem 对此很有用。
-
@Antzi 请注意,根据 Figaro 的自述文件,Figaro 不支持 database.yml,因为它是在 figaro 配置之前读取的。
-
更新:Figaro 现在适用于所有 Rails 版本的 database.yml。 github.com/laserlemon/figaro/pull/100
标签: ruby-on-rails environment-variables yaml ruby-on-rails-2