ActiveRecord:连接断开时如何自动重新连接到PostgreSQL?

Eth*_*han 5 ruby postgresql activerecord sinatra

我正在将ActiveRecord与Sinatra和PostgreSQL一起使用。当数据库连接断开(由于临时网络故障或postgres服务器重新启动)时,我的应用程序不会自动重新获得连接。我必须重新启动应用程序才能再次连接到postgres。我记得当我在另一个项目中使用Rails时,我没有遇到这个问题。

我需要输入一些配置或代码来告诉ActiveRecord自动重新连接到PostgreSQL吗?

iai*_*ain 0

来自https://www.new-bamboo.co.uk/blog/2010/04/11/automatic-reconnection-of-mysql-connections-in-active-record/

如果您在 Rails 外部或至少在控制器操作外部使用 Active Record,则必须在执行数据库语句之前自行验证连接。这可以通过以下代码完成:

ActiveRecord::Base.verify_active_connections!
Run Code Online (Sandbox Code Playgroud)

由于 Active Record 每个线程使用一个连接,因此在多线程应用程序中,必须为每个线程单独执行此验证。

这篇博客文章是关于重新连接到 MySQL 的,但我猜无论使用什么引擎,它都是一样的,因为它被抽象了。该博客还在配置中提到了重新连接选项,但您必须确定它是否适用于 Postgres。