【问题标题】:Can't run Ruby on Rails tests on Heroku's hosted Postgres databases无法在 Heroku 托管的 Postgres 数据库上运行 Ruby on Rails 测试
【发布时间】:2013-07-31 08:41:01
【问题描述】:

我目前正在评估 Nitrous.io 并喜欢我目前所看到的。我目前也有一些用于测试和开发的数据库在 Heroku 托管的 Postgresql 服务上运行。我在运行测试时遇到了一些问题,我希望这里的某个地方可能有解决方案。

当我运行 rake db:test:prepare 时出现错误:

 FATAL:  permission denied for database "postgres"                                                                                                                  
 DETAIL:  User does not have CONNECT privilege.   

根据我在其他地方读到的内容,这是试图删除数据库,但 Heroku 的托管数据库不允许这样做。有谁知道如何在 Heroku 的 Postgresql 上运行 Rails 测试?

【问题讨论】:

  • 你为什么要尝试在heroku上运行测试?
  • 我正在 Nitrous.io 上进行开发,他们建议对数据库使用 Heroku 托管的 Postgres 解决方案。我在上面提到过,尽管我想并没有真正解释过 Nitrous。我只是想看看在使用 Nitrous.io 在“云”中开发时是否有解决方案。
  • 也许我是个白痴,但我不知道这个 nitrous.io 做了什么(是的,我看过他们的页面)
  • @MichaelSzyndel 基本上它允许您在云中配置一个盒子并通过您的浏览器在该盒子上进行开发。这样,无论您使用什么计算机,您都可以进行开发,而不必担心再次设置环境。他们也有一个浏览器内的 IDE。

标签: ruby-on-rails postgresql heroku nitrousio


【解决方案1】:

Nitrous.IO 发布了一个包管理器,允许您在 Nitrous 盒子中安装 Postgres。如果需要,这可用于您的测试数据库和开发数据库:

https://github.com/action-io/autoparts

这还要求您使用的是运行版本“bran”或更高版本的 Nitrous 盒子(请参阅 README)。如果您在“arya”版本上运行,您可能需要终止/创建一个新框。

要使用 autoparts,请运行 parts search 以查看所有可用的软件包。

要在 Nitrous 框中安装 postgresql,请运行以下命令:

部分安装postgresql

确保您的config/database.yml 文件为您希望连接的每个数据库明确设置host: localhost,否则 pg 适配器将无法找到它需要连接的套接字。

【讨论】:

  • 如何通过部件连接 Rails 应用和 postgresql?部件状态显示 postgresql 正在运行,但我可以 rake db:migrate my app.
  • 不错的功能。不过,我遇到了与 cpursley 相同的问题。当我运行 rake db:create:all 我得到“无法连接到服务器:没有这样的文件或目录服务器是否在本地运行并接受 Unix 域套接字上的连接”/var/run/postgresql/.s.PGSQL。 5432”?有什么建议吗?
  • 我也有同样的问题。 psql 使用无密码默认用户名运行得非常好,但无论出于何种原因,普通的 database.yml 配置都无法与上述错误建立连接。 :-(
  • 啊哈,刚刚发现它是关于 parts 如何从源代码构建 postgres 并将其分发为套接字最终以 /tmp/.s.PGSQL.5432 结尾的 b/c——我尝试了符号链接,但 Nitrous 确实如此不允许写访问/var/run
  • 修复了!好吧,这完全是奇怪的和反直觉的,但是为了让 postgres 适配器在/tmp/ 中查找套接字,您通常在 database.yml 文件中指定host: localhost。 :(
【解决方案2】:

根据 Heroku 文档,您需要在 rake 任务中使用“heroku pg:reset”。

https://devcenter.heroku.com/articles/rake

【讨论】:

  • 问题是,它不是 Heroku 网站。我只使用 Heroku 的 Postgres 托管数据库解决方案。
  • @RyanN 但是您必须创建一个 Heroku 应用程序才能获取数据库,不是吗?
  • @MichaelSzyndel 不,您可以在不在 Heroku 上托管应用程序的情况下配置 Heroku 数据库。 postgres.heroku.com
猜你喜欢
  • 2018-07-12
  • 2011-10-02
  • 2013-07-06
  • 2018-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-14
  • 2012-09-07
相关资源
最近更新 更多