无法在Heroku托管的Postgres数据库上运行Ruby on Rails测试

5

我目前正在评估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上运行测试? - Mike Szyndel
我正在Nitrous.io上进行开发,他们建议使用Heroku的托管Postgres解决方案来处理数据库。我之前提到过它,但似乎并没有详细解释Nitrous。我只是想看看在使用Nitrous.io进行“云端”开发时是否有解决方案。 - RyanN
也许我很蠢,但我真的不知道nitrous.io是做什么的(是的,我已经看过他们的页面了)。 - Mike Szyndel
1
基本上,它允许您在云中预配一个盒子,并通过浏览器在该盒子上进行开发。这样,您可以在任何计算机上进行开发,而无需担心再次设置环境。他们还有一个内置的IDE。 - RyanN
2个回答

3
Nitrous.IO发布了一个软件包管理器,可以让你在Nitrous box中安装Postgres。这可以用作测试数据库以及开发数据库(如果需要)。

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

这也要求您使用运行版本为“bran”或更高版本的Nitrous box(请参见README)。如果您正在运行版本“arya”,则可能需要终止/创建新的box。
要使用autoparts,请运行parts search以查看所有可用的软件包。
要在Nitrous box中安装postgresql,请运行以下命令:

parts install postgresql

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

我该如何通过 Parts 连接 Rails 应用程序和 PostgreSQL?Parts 状态显示 PostgreSQL 正在运行,但我无法使用 rake db:migrate 命令迁移我的应用程序。 - cpursley
不错的功能。不过我和cpursley遇到了同样的问题。当我运行rake db:create:all时,出现了“无法连接到服务器:没有这样的文件或目录,服务器是否在本地运行并接受连接Unix域套接字“/var/run/postgresql/.s.PGSQL.5432”上的连接?”有什么建议吗? - RyanN
我也遇到了同样的问题。psql在没有密码的默认用户名下运行得非常好,但由于某种原因,一个简单的database.yml配置无法建立连接并出现上述错误。 :-( - Justin Searls
啊哈,刚发现是由于parts正在从源代码构建Postgres并将其分发,导致套接字最终出现在/tmp/.s.PGSQL.5432中 - 我尝试了符号链接,但Nitrous不允许写入/var/run - Justin Searls
修复了!好的,这完全是奇怪和违反直觉的,但为了让postgres适配器在/tmp/中查找套接字,您必须在database.yml文件中指定host: localhost。 :( - Justin Searls

0

事实是,这不是一个Heroku网站。我只是使用Heroku提供的托管Postgres数据库解决方案。 - RyanN
@RyanN 但是你必须创建一个Heroku应用程序来获取数据库,对吗? - Mike Szyndel
@MichaelSzyndel 不是的,你可以在 Heroku 上托管应用程序之外,单独为数据库进行配置。https://postgres.heroku.com/ - RyanN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接