我正在尝试编写一个包含websockets的Sinatra应用程序。我的Sinatra应用程序使用Postgres作为后端(在没有websockets的情况下完美运行)。我添加了eventmachine
和em-websocket
来支持我的应用。除了x
个请求之后,一切都很有效,我得到一个ActiveRecord ConnectionPool超时。似乎EventMachine没有释放数据库连接,但我之前从未使用过EM,所以我不确定该怎么做。我们将这四种(AR + EM + PG + Sinatra)技术结合在一起的最佳途径是什么,而不会火上浇油?理想情况下,寻找某种类型的ConnectionPool gem,它将导致EM在请求结束时释放数据库连接,或者具有这种性质的东西。
答案 0 :(得分:1)
ActiveRecord有一个中间件ActiveRecord::ConnectionAdapters::ConnectionManagement
,可在请求后正确关闭连接。您可以在config.ru
中激活它(我假设您使用config.ru
文件启动Sinatra应用。如果您不熟悉将Sinatra与config.ru
一起使用,则some {{3关于它在文档中)。将此行放在require ...
下方run ...
上方
use ActiveRecord::ConnectionAdapters::ConnectionManagement