gpt4 book ai didi

ruby - ActiveRecord 连接警告。 (数据库连接不会自动关闭)

转载 作者:数据小太阳 更新时间:2023-10-29 06:45:15 24 4
gpt4 key购买 nike

我正在尝试使用 Sinatra 和 ActiveRecord (3.2.3) 创建一个小应用。

这是我的主文件的样子:

require "sinatra"
require "sinatra/reloader"
require "active_record"
...

ActiveRecord::Base.establish_connection(
adapter: 'sqlite3',
database: 'db.sqlite3',
host: 'localhost',
)

class Post < ActiveRecord::Base
...
end

get('/') { ... }
get('/posts') { ... }
...

它有效,但有时我会在控制台中收到警告:

DEPRECATION WARNING: Database connections will not be closed automatically, please close your database connection at the end of the thread by calling close on your connection. For example: ActiveRecord::Base.connection.close'

当出现警告时,需要很长时间才能刷新页面。我不明白我应该在哪里关闭连接。我尝试将 ActiveRecord::Base.connection.close 放在文件的底部,但没有帮助。

更新:

我忘了说我还使用了来自 sinatra-contrib 的 sinatra/reloader 插件gem 在不重启服务器的情况下查看效果。

require "sinatra/reloader"

如果我将其注释掉,那么问题就消失了。但无论如何,我想知道如何在不禁用重新加载器的情况下解决这个问题。

最佳答案

您需要向堆栈中添加一个中间件。只需将此行添加到您的 config.ru 机架文件中:

use ActiveRecord::ConnectionAdapters::ConnectionManagement

在这里找到答案:https://github.com/puma/puma/issues/59

关于ruby - ActiveRecord 连接警告。 (数据库连接不会自动关闭),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10191531/

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