fe_sendauth:Amazon RDS未提供密码

时间:2016-05-08 14:24:41

标签: ruby-on-rails bash postgresql amazon-web-services amazon-rds

我知道很多其他人都遇到过这个问题,但我在Postgres配置中受限制,因为我使用的是亚马逊RDS ...

以下是 database.yml

的相关部分
default: &default
  host: <%= ENV["POSTGRES_HOST"] %>
  username: <%= ENV["POSTGRES_USER"] %>
  password: <%= ENV["POSTGRES_PASSWORD"] %>
  adapter: postgis
  encoding: unicode
  database: <%= ENV["POSTGRES_DB"] %>
  port: 5432
  pool: 5

当我对主机进行硬编码时,保留其他所有内容,并加载localhost:3000,我收到fe_sendauth: no password supplied错误。但是,当我硬编码所有值而不是使用ENV变量时,所有内容都正常加载而没有错误。

我使用的是Amazon RDS,所以我没有能力编辑pg_hba.conf,但这只是一个更简单的问题,即RoR无法访问ENV变量吗?

1 个答案:

答案 0 :(得分:3)

是的,很明显你的ENV值正在返回零。请记住,生产服务器上的环境变量的加载方式与localhost不同。在大多数部署配置中,您不能简单地设置Unix环境变量,并且可以在ENV中检测到它。

我无法详细说明如何根据您提供的代码设置ENV变量,但您应该考虑使用Figaro(https://github.com/laserlemon/figaro)或dotenv(https://github.com/bkeepers/dotenv)来为您管理您的ENV变量。但是,它需要额外的步骤来管理源代码控制之外的环境变量文件。