首页 > 解决方案 > Ruby 应用程序不再能够访问远程 Heroku Postgres - 在本地安装 Postgres.app 之后

问题描述

几个月来,我的 dev't Mac 上的 ruby​​ (sinatra) 应用程序“foo.rb”一直在使用远程 Heroku 托管的 Postgres 数据库。

该应用程序不使用任何本地数据库,无论是在开发还是生产中。

对于另一个项目,我从 Heroku 安装了 Postgress.app,首先按照建议删除了一个非常旧的版本,使用brew remove postgresql

下次我运行 foo.rb 并尝试使用 SomeModel.count 访问(远程)数据库时,我得到了错误:

PG::ConnectionBad: FATAL: no pg_hba.conf entry for host , user , database , SSL off

我很困惑为什么当数据库连接配置指向远程 postgres url 时错误显示我的 devt 机器地址,以及为什么它说 SSL 关闭。

任何想法如何摆脱错误?有什么办法可以看到它抱怨的 pg_hba.conf 的路径,所以我可以验证它是否包含正确的主机条目?

(我想知道 pg gem 是否有自己的副本隐藏在某个地方。)

我可以找到的 pg_hba.conf 副本(在旧版和新 Postgress.app 版本的 /Library/Application Support/XXXX 中)具有正确(且未更改)的主机条目。

标签: rubypostgresqlherokupostgres.app

解决方案


答案原来是:

  1. pg在 Gemfile 中注释掉
  2. bundle install
  3. 代替pg
  4. bundle install

我怀疑在pg安装 gem 时,它会动态建立一些到 postgresql 的链接,所以如果你移动postgresql(就像我在安装 Postgres.app 时所做的那样),你需要删除pggem 然后重新添加它。


推荐阅读