ruby - ActiveRecord + EventMachine + Postgres + Sinatra

标签 ruby postgresql activerecord sinatra eventmachine

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

最佳答案

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

use ActiveRecord::ConnectionAdapters::ConnectionManagement

关于ruby - ActiveRecord + EventMachine + Postgres + Sinatra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17959857/

相关文章:

ruby-on-rails - 对象集合的 Rails 模型类方法

ruby-on-rails - Rails 3 默认范围,覆盖范围

ruby - Watir Webdriver 如何关闭子窗口

javascript - 如何在网站中嵌入在线 ruby​​/javascript 代码执行器

postgresql - docker-compose up 与 docker-compose run,为什么后者似乎没有启动服务?

mysql - 我应该如何将遗留的 MYSQL 数据库导入到将使用 Postgres 的新 Django 项目中?

ruby-on-rails - 当 Devise 用户超出我的默认范围时,如何允许他们登录?

Ruby:格式化已经格式化的日期字符串

ruby - 使用 Selenium Webdriver 切换窗口时出错

javascript - 如何通过postgresql插入数据库