Ruby 应用程序不再能够访问远程 Heroku Postgres - 在本地安装 Postgres.app 之后

Ruby app no longer able to access remote Heroku Postgres - AFTER installing Postgres.app locally

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

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

对于另一个项目,我从 Heroku 安装了 Postgress.app,首先使用 brew remove postgresql

删除了推荐的非常旧的版本

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

PG::ConnectionBad:致命:没有 pg_hba.conf 主机、用户、数据库条目,SSL 关闭

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

有什么想法可以消除错误吗?有什么方法可以查看它所抱怨的 pg_hba.conf 的路径,以便我可以验证它是否包含正确的主机条目?

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

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

您的脚本似乎正在尝试连接未正确配置的地方

这种情况下需要检查的事项:

  1. 您的 database.yml 或连接字符串,DATABASE_URL 与来自 postgres.app

  2. 的本地主机匹配
  3. 是你的 postgres.app 是 运行 并且有一个数据库服务器 运行(检查你的 osx 顶部栏上的大象图标)

  4. 您正确安装并配置了 postgres 应用程序您需要设置路径,您可以通过在新终端中输入 psql 来检查 window,如果它运行是好的。

Configure your $PATH to use the included command line tools (optional):

sudo mkdir -p /etc/paths.d &&
echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp
  1. post问题中你的文件或其中的一部分,对调试有很大帮助:)

答案竟然是:

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

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