我运行我的rspec,大多数测试都失败了。我得到了相同的错误,这是:
Failure/Error: Unable to find matching line from backtrace
ActiveRecord::StatementInvalid:
PG::ConnectionBad: PQsocket() can't get socket descriptor: BEGIN
我发现了一个与我的问题相似的问题,但是没有答案,我也尝试了这个链接的解决方案,但对我来说没有任何区别。我打开我的测试控制台,运行一些最简单的查询,它工作了。
pg: '0.18.1'
可能有问题。我试着恢复到0.18.0
,我相信问题已经消失了。
我将在本地测试了一点后在repo上打开一个问题。我把这个问题添加到pg仓库。
编辑:我错了。不过,真正有帮助的是安装spring-commands-rspec gem。我认为它最终为我做的是将它缓存到它工作的状态。尽管它也可以很容易地将它缓存到不需要的状态。我不知道问题是否链接-但我发现,通过使用本地unix套接字文件而不是localhost,这个问题似乎消失了链接的问题;也许这对你也有帮助?
"耙spec"不通过大多数测试,但"rails";
我得到同样的错误,和其他一些错误,如PG::UnableToSend: socket not open
。似乎是随机出错。我查了一下,这实际上是由于一个模型有不适当的belongs_to
关联。这可能不适用于你,但希望它能帮助别人。
belongs_to :user, class_name: User
应该是:
belongs_to :user, class_name: 'User'
不知怎么的,这一行破坏了我所有的PG套接字连接。
可能与rspec没有任何关系,但为了以防万一,把它放在那里。我为此奋斗了几个星期,对我来说,这是乘客产生新进程的方式。我只需要加上这个
# Rails -- prepared statements incompatible with faster spawn methods.
PassengerSpawnMethod conservative
到etcapache2mods-availablepassenger.conf
我已经安装了'pg', '0.20.0'
,通过降级到0.19.0,它为我工作。