【问题标题】:ActiveRecord + EventMachine + Postgres + SinatraActiveRecord + EventMachine + Postgres + Sinatra
【发布时间】:2013-07-31 08:34:39
【问题描述】:

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

【问题讨论】:

    标签: ruby postgresql activerecord sinatra eventmachine


    【解决方案1】:

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

    use ActiveRecord::ConnectionAdapters::ConnectionManagement
    

    【讨论】:

    • 我该如何使用它?我是否只需将该行放在 config.ru 中?
    猜你喜欢
    • 2015-06-23
    • 2012-02-26
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 2013-05-17
    • 2013-07-04
    • 1970-01-01
    相关资源
    最近更新 更多