gpt4 book ai didi

ruby-on-rails - 事件记录重置数据库连接问题 - ActiveRecord::Connection.clear_active_connections

转载 作者:行者123 更新时间:2023-12-03 15:56:11 25 4
gpt4 key购买 nike

有人可以解释一下这两个函数究竟做了什么,我无法通过 rails api 理解它。

  ActiveRecord::Connection.clear_active_connections!
ActiveRecord::Connection.clear_all_connections!()

我正在开发一个应用程序,我必须在其中建立动态数据库连接。
在建立新连接之前,我需要放置这些行吗?
当我建立新连接时,旧连接会发生什么,因为我没有明确删除它,这会自动发生吗?

最佳答案

首先,我想你想要 ActiveRecord::Base.connection
我现在正在研究这些问题。尽我所能告诉 ActiveRecord::Base.establish_connection将从池中删除所有先前的连接并仅使用新连接。

当我在 ActiveRecord::Base 上来回交换和更改连接时遇到问题级别和单个模型级别(即 User.establish_connection 。在某些情况下,我发现如果我在模型上建立连接,然后在 ActiveRecord::Base 上建立连接(打算也使用模型上的新连接),模型将保留连接。

以机智:

$ ActiveRecord::Base.connection_config[:host]
-> main
$ User.connection_config[:host]
-> main

$ User.establish_connection :blah
$ User.connection_config[:host]
-> blah
$ ActiveRecord::Base.connection_config[:host]
-> main

$ ActiveRecord::Base.establish_connection :blah
$ User.connection_config[:host]
-> blah
$ ActiveRecord::Base.connection_config[:host]
-> blah

$ ActiveRecord::Base.establish_connection :main
$ User.connection_config[:host]
-> blah
$ ActiveRecord::Base.connection_config[:host]
-> main

这里要注意的重点是,因为您已经在 User 上建立了连接。明确模型, ActiveRecord知道使用的连接池与用于 ActiveRecord::Base 的其他子级的连接池不同。 ;因此,当您切换 ActiveRecord::Base 时连接回来,它不会切换所有模型,只切换共享主连接池的模型。

这是 ConnectionHandler文档: http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/ConnectionHandler.html

关于ruby-on-rails - 事件记录重置数据库连接问题 - ActiveRecord::Connection.clear_active_connections,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20513445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com