使用connection_pool块在rails中进行Sucker punch测试会导致连接超时

时间:2015-11-09 16:22:04

标签: ruby-on-rails ruby activerecord sucker-punch

提前感谢您的回复。

在工作中,我们使用sucker punch gem为rails应用程序发送电子邮件以及我们想要异步执行的其他操作。

我们实现了几个没有问题的actor,甚至成功地为它们编写了一些测试,使用推荐的配置(在规范中需要sucker_punch/testing/inline并使用截断作为数据库清理策略)。

一切都像魅力一样,直到我们决定实施的最后一个演员。它与其他产品没有什么不同,但现在,在运行测试套件时,会引发ActiveRecord::ConnectionTimeoutError

我在互联网上搜索了一个解决方案,但没有任何结果。大多数答案(如this one)建议使用ActiverRecord::Base.connection_pool.with_connection方法将块传递给它。我们已经这样做了。

我唯一可以想到的是我们正在处理演员的错误,拯救例外,如下:

def perform
  ActiveRecord::Base.connection_pool.with_connection do
    begin
      ... # do something
    rescue SomeException => e
      ... # handle exception
    end
  end
end

但是看source这不是问题,因为with_connection确保释放它。

如果我有新闻,我将在sucker punch上打开一个问题,并会更新这个问题。

有问题的发布可以等待,但这也让我想知道我们是否在生产中遇到同样的问题......

干杯, 阿尔达纳。

修改 gem的作者告诉我,显然代码没有任何问题,并建议增加池大小。我将使用这种方法,如果错误仍然存​​在,我们将更改代码的某些部分,而不是使用sucker punch。

0 个答案:

没有答案