ActiveRecord + EventMachine + Postgres + Sinatra

时间:2013-07-31 00:53:35

标签: ruby postgresql activerecord sinatra eventmachine

我正在尝试编写一个包含websockets的Sinatra应用程序。我的Sinatra应用程序使用Postgres作为后端(在没有websockets的情况下完美运行)。我添加了eventmachineem-websocket来支持我的应用。除了x个请求之后,一切都很有效,我得到一个ActiveRecord ConnectionPool超时。似乎EventMachine没有释放数据库连接,但我之前从未使用过EM,所以我不确定该怎么做。我们将这四种(AR + EM + PG + Sinatra)技术结合在一起的最佳途径是什么,而不会火上浇油?理想情况下,寻找某种类型的ConnectionPool gem,它将导致EM在请求结束时释放数据库连接,或者具有这种性质的东西。

1 个答案:

答案 0 :(得分:1)

ActiveRecord有一个中间件ActiveRecord::ConnectionAdapters::ConnectionManagement,可在请求后正确关闭连接。您可以在config.ru中激活它(我假设您使用config.ru文件启动Sinatra应用。如果您不熟悉将Sinatra与config.ru一起使用,则some {{3关于它在文档中)。将此行放在require ...下方run ...上方

use ActiveRecord::ConnectionAdapters::ConnectionManagement