ruby - 在 fork 之前强制断开与 DataMapper(DataObjects 适配器)的连接?

标签 ruby datamapper

使用 DataMapper,在 fork 子进程的过程中,由于父进程中的数据库连接仍在打开(和使用),我遇到了数据包损坏。我想强制断开连接并重新连接,就像您在 fork 时应该做的那样,但 DataMapper 看起来甚至没有考虑过这个用例。

现在我要通过一个私有(private) API,并且必须弄清楚一些内部结构和它的连接池才能做到这一点,所以感觉不对:

DataMapper.repository(:default).adapter.send(:open_connection).dispose

有谁知道是否有更“公开”和正确的方法来做到这一点?我在 IRC channel 上询问,但没有人回应。

最佳答案

我在 the solution 上取得了成功在另一个问题中提出,例如

# Disconnects an existing DataMapper Session
def disconnect!
  DataObjects::Pooling.pools.each do |pool|
    pool.dispose
  end
end

关于ruby - 在 fork 之前强制断开与 DataMapper(DataObjects 适配器)的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10458882/

相关文章:

ruby - 使用 Sinatra 制作日历

php - 如何使用 Zend\Db\TableGateway 和 Zend Framework 2 中的映射器处理(嵌套)列表的多维输出?

ruby-on-rails - DataMapper:使用 auto_migrate!具有多对多依赖关系?

html - 如何确定在 Controller 操作中呈现哪个 View

ruby-on-rails - 如何列出所有模型并包含一个通用模块

ruby - RethinkDB 单个请求中的多个查询

mysql - Datamapper 独特约束和偏执删除

ruby - Datamapper:报告为什么我不能销毁记录

ruby-on-rails - 为什么我的与时间相关的单元测试每天下午 4 点中断?

objective-c - obj-c 的 Ruby 解析器